Запрос поля массивов MongoDB с более чем одним условием

StackOverflow https://stackoverflow.com/questions/8839380

  •  27-10-2019
  •  | 
  •  

Вопрос

Есть ли способ запроса полей массивов в документах в MongoDB с использованием более одного условия? Пример документа:

{
    'title': 'A document title',
    'array_element': [
        {
            'some_identifier': 'abcdefg',
            'value': 10
        },
        {
            'some_identifier': 'hijklmnop',
            'value': 5
        },
        {
            ...etc...
        }
    ]
}

Мне нужно запросить коллекцию, чтобы найти самое низкое значение для конкретного идентификатора, однако эти значения хранятся с другими в массиве. Я знаю, что могу запросить коллекцию, чтобы найти документ, который содержит элемент массива с наименьшим значением, и который содержит элемент массива, который соответствует идентификатору, но я не могу быть уверен, что определенный элемент массива будет соответствовать оба эти условия Анкет Есть ли способ сделать это эффективно?

Это было полезно?

Решение

Вы можете использовать $elemMatch оператор Чтобы сделать это, например

foo.find( { "array_element" : 
             { $elemMatch : { 'some_identifier' : 'abcdefg', 'value' : 8 } } } );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top