я следующий в моей коллекции счетов:Монго Командная строка Запросы 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 с указанной выше командой.
Я только что сохранил ваш точный документ и запросил его через ваш точный запрос и вернул документ. Является ли документ таким же, как вы его вставили, когда вы просто делаете db.accounts.find()? –
Не уверен, что это только опечатка, но вы пишете один раз, когда хотите запросить ** 4fc55125476e0a27d9000003 **, но ваш запрос показывает ** 4 ** в конце. Если в вашем наборе данных нет записи с ... 3, вы ее не найдете. Ваш _id, который содержит ... 3, содержит информацию об этом преподавателе. Запрос должен работать в любом случае. – philnate
@philnate Вы правы. Я хотел использовать идентификатор учителя, то есть тот, у кого есть 4. Возможно, именно поэтому я получил нуль. Я попробую это снова (позже этим вечером, не могу сейчас) и опубликовать то, что я нахожу. Благодаря! – septerr