2013-11-14 5 views
0

новичок в MongoDBМонго дб найти операцию запроса не работает

db.myjobs.find() GetS следующие результаты

{ "_id" : ObjectId("52849a7b8dd61980d1b49b87"), "browser" : "FF20", "id" : "70", "jobs" : [ { "_id" : "5281d1680d0f2f2aaec5787e", "date" : "Tue Nov 12 2013 12:27:44 GMT+0530 (IST)", "id" : "29" } ], "os" : "VM-WIN7-64", "server" : "172.16.2.120" } 

из приведенного выше результата я должен вернуться "os" : "VM-WIN7-64" на основе id=29 внутри jobs

я использую следующий код, и это неверно.

db.myjobs.find({ id: 29 }) 

Как я могу получить "os" : "VM-WIN7-64" путем ввода id (ID = 29) внутри jobs нет необходимости, чтобы получить os детали с помощью "id":"70"

ответ

4

Как это:

db.myjobs.find({ "jobs.id": "29" }) 

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

Более то поле в MongoDB набирается так строка "29" не равно числу 29

+0

вы были быстрее :-) –

+0

Но это не так легко бить вас :) – zero323

+0

будет работать, так что сейчас все вопросы твои :-) –

1

Вы можете использовать оператор точки, чтобы войти внутрь объекта.

db.myjobs.find({ 
    "jobs.id": "29" 
}) 
0

Ниже следует работать

db.myjobs.find ({ "jobs.id": "29"}, { "_ идентификатор": 0, "ОС": 1})

0

Используйте следующее, и оно должно работать. Дайте мне знать, если он работает для вас с UPVOTE

db.myjobs.find({id: 29}) 
Смежные вопросы