2015-12-21 2 views
0

документов выглядит следующим образом:Монго найти на основе значения в массиве объектов

{ 
    name: 'abc', 
    types: [ 
    {name:'Large',stock:true}, 
    {name:'XLarge',stock:false}, 
    {name:'XXLarge',stock:true} 
    ] 
} 

Я пытаюсь выяснить, запрос возвращает все документы, которые в наличии.

Нечто вроде: .find({types:{{$nin:{stock:true}}}) Могу ли я как-то это сделать?

+0

Вы хотите, чтобы вы, например, вернули документ или нет? –

+1

Возможный дубликат: [Получить только запрошенный элемент в массиве объектов в коллекции MongoDB] (http://stackoverflow.com/questions/3985214/retrieve-only-the-queried-element-in-an-object-array-in -mongodb-коллекция) – styvane

ответ

3

Вы можете запросить с помощью позиционного оператора, как это:

db.collection.find({'types.stock':{$ne:true}}) 

$nin оператор используется для поиска элементов не в конкретном массиве. $ne (не равно) - это намного лучшая операция в вашем случае.

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