2016-04-06 3 views
1

Предположительно у меня есть Монго документ, который выглядит примерно следующим образом:Запрашивание массива во встроенном списке

{ 
    'foo':1 
    'listOfLists' : [ [1,2],[3,4] ] 
} 

(Да я знаю, что это не так, как это «действительно» внешний вид, но она должна быть достаточно простой для объяснения целей.)

Если бы я хотел написать запрос, который будет проверять, чтобы увидеть, содержит ли список listOfLists объект, содержащий комбинацию [3,4], как я могу это сделать?

Могу ли я сделать что-то вроде

collection.find({'listsOfLists' : {'$elemMatch' : [3,4] } }) 

ответ

1
collection.find({ 'listsOfLists': [3,4] }). 

Это просто "прямой матч" на имущество. MongoDB автоматически рассмотрит каждый элемент массива. Здесь вам не нужно $elemMatch.

Если вы должны были использовать его, вам необходимо выражение оператора, например $eq:

collection.find({ 'listsOfLists': { '$elemMatch': { '$eq': [3,4] } } }). 

Но это, конечно, не требуется, если нет «два или более» условия, которые на самом деле должны соответствовать по элементы массива. Это то, что на самом деле $elemMatch.

+0

Итак, в смежном товаре. Могу ли я использовать $ elemMatch, чтобы проверить, соответствует ли только первый элемент в списке запросу? Что-то вроде {'$ elemMatch': {'$ eq': 3}} –

+0

@ K.Niemczyk Это будет [Другой вопрос для запроса] (http://stackoverflow.com/questions/ask), но он один с логическим ответом. Отправьте еще один вопрос, если вы не можете это решить. –

Смежные вопросы