Запрос к полям массива mongodb с более чем одним условием - PullRequest
2 голосов
/ 12 января 2012

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

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

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

1 Ответ

5 голосов
/ 12 января 2012

Для этого можно использовать оператор $elemMatch , например,

foo.find( { "array_element" : 
             { $elemMatch : { 'some_identifier' : 'abcdefg', 'value' : 8 } } } );
...