2014-12-05 2 views
0

У меня есть документ JSon, который имеет структуру, как показан ниже:Монго Поиск по Json Название

{ 
    "125": { 
     "name": "sample name one", 
     "age" : 22, 
    }, 
    "126": { 
     "name": "sample name two", 
     "age" : 27, 
    }, 
    "127": { 
     "name": "sample name three", 
     "age" : 21, 
    } 
} 

Я хочу, чтобы вернуть объект, представленный на 125, то есть следующий объект:

{ 
    "name": "sample name one", 
    "age" : 22, 
} 

Я пробовал следующий запрос с консоли, но я не могу получить нужный мне результат: db.persons.find({"125": {$exists: true}}).

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

ответ

1
db.persons.find({"125": {$exists: true}}) 

возвратит весь документ, имеющий ключ «125», а не только клавишу «125».

Если Вам нужно возвращать только «125», Вы должны использовать проекцию, передав его в качестве второго аргумента, чтобы найти:

db.persons.find({"125": {$exists: true}}, {"125": 1}) 

тогда вы получите документы, содержащие ключ «125», без каких-либо других ключей (за исключением _id этого документа)

чтобы опустить _id документа, Вы должны использовать:

db.persons.find({"125": {$exists: true}}, {"125": 1, _id: 0}) 

EDIT:

Вы рассматривали использование массива для этих поддокументов с повторяющейся схемой? Это было бы более естественно, идиоматично, а также дать вам дополнительные возможности.

0

В поисках Монго по JSON ключ/поле/имя, используйте оператор $exists

db.things.find({ '125' : { $exists : true } }); 
Смежные вопросы