2012-05-29 2 views
0

я следующий в моей коллекции счетов:Монго Командная строка Запросы Embedded Document Object Id по

{ "_id" : ObjectId("4fc55125476e0a27d9000003"), 
"created_at" : ISODate("2012-05-29T22:43:49Z"), 
"teachers" : [ { 
"_id" : ObjectId("4fc55125476e0a27d9000004"), 
"updated_at" : ISODate("2012-05-29T22:43:49Z"),  
"created_at" : ISODate("2012-05-29T22:43:49Z") 
} ], 
"updated_at" : ISODate("2012-05-29T22:43:49Z") 
} 

Я хочу запросить для учетной записи, которая имеет учителя с _id 4fc55125476e0a27d9000003.

Если я использую команду

db.accounts.findOne({"teachers._id" : ObjectId("4fc55125476e0a27d9000004")}) 

возвращает нуль.

Кроме того, почему вещь командной строки mongo висит, когда я использую find вместо findOne с указанной выше командой.

+0

Я только что сохранил ваш точный документ и запросил его через ваш точный запрос и вернул документ. Является ли документ таким же, как вы его вставили, когда вы просто делаете db.accounts.find()? –

+0

Не уверен, что это только опечатка, но вы пишете один раз, когда хотите запросить ** 4fc55125476e0a27d9000003 **, но ваш запрос показывает ** 4 ** в конце. Если в вашем наборе данных нет записи с ... 3, вы ее не найдете. Ваш _id, который содержит ... 3, содержит информацию об этом преподавателе. Запрос должен работать в любом случае. – philnate

+0

@philnate Вы правы. Я хотел использовать идентификатор учителя, то есть тот, у кого есть 4. Возможно, именно поэтому я получил нуль. Я попробую это снова (позже этим вечером, не могу сейчас) и опубликовать то, что я нахожу. Благодаря! – septerr

ответ

1

Как указывалось другими, запрос действительно работает. Не уверен, что происходит на днях, что я не мог заставить его вернуть правильный результат. Возможно, я использовал неправильный db. Спасибо за помощь и извинения за то, что тратили свое время.