Для справки, я немного новичок, когда дело доходит до Rails и MongoDB.
Я использую Rails + Mongoid + MongoDB для создания приложения, и я заметил, что Mongoid по какой-то причине добавляет ObjectID во внедренные документы.
Есть ли способ запросить все документы в коллекции по ObjectID, как основные, так и вложенные?
Если я выполню эту команду
db.programs.findOne( { _id: ObjectId( "4d1a035cfa87b171e9000002" ) } )
Я получу этирезультаты, что является нормальным, так как я запрашиваю ObjectID на корневом уровне.
{
"_id" : ObjectId("4d1a035cfa87b171e9000002"),
"created_at" : "Tue Dec 28 2010 00:00:00 GMT+0000 (GMT)",
"name" : "program",
"routines" : [
{
"name" : "Day 1",
"_id" : ObjectId("4d1a7689fa87b17f50000020")
},
{
"name" : "Day 2",
"_id" : ObjectId("4d1a7695fa87b17f50000022")
},
{
"name" : "Day 3",
"_id" : ObjectId("4d1a76acfa87b17f50000024")
},
{
"name" : "Day 4",
"_id" : ObjectId("4d1a76ecfa87b17f50000026")
},
{
"name" : "Day 5",
"_id" : ObjectId("4d1a7708fa87b17f50000028")
},
{
"name" : "Day 6",
"_id" : ObjectId("4d1a7713fa87b17f5000002a")
},
{
"name" : "Day 7",
"_id" : ObjectId("4d1a7721fa87b17f5000002c")
}
],
"user_id" : ObjectId("4d190cdbfa87b15c2900000a")
}
Теперь, если я пытаюсь выполнить запрос с ObjectID с одним из встроенных документов (процедур), я получаю нулевое значение, как это происходит.
db.programs.findOne( { _id: ObjectId( "4d1a7689fa87b17f50000020" ) } )
null
Я знаю, что можно запросить встраиваемые объекты, например, так:
db.postings.find( { "author.name" : "joe" } );
, но это кажется немного излишним, если вы получили какой-то ObjectID и хотите найти в каком документеObjectID находится постоянно.
Так что, я думаю, у меня такой вопрос ...
Возможно ли с помощью какого-то незнакомого мне метода выполнить запрос по ObjectID и выполнить поиск ObjectID во встроенных документах?
Спасибо.