Я только начал создавать небольшое приложение, используя MongoDB, и, похоже, не могу найти примеров, где я могу добавить объекты в глубокий массив, который я затем смогу найти на индивидуальной основе.
Позвольте мне проиллюстрировать следующий набор шагов, которые я предпринимаю, а также код, который я написал.
Я создаю простой объект в MongoDB примерно так:
testing = { name: "s1", children: [] };
db.data.save(testing);
Когда я запрашиваю его, все выглядит красиво и просто:
db.data.find();
Какие выходы:
{
"_id" : ObjectId("4f36121082b4c129cfce3901"),
"name" : "s1",
"children" : [ ]
}
Однако после того, как я обновил массив «children», «вставив» в него объект, я попал в разного рода проблем.
Сначала запускаю команду обновления:
db.data.update({ name:"s1" },{
$push: {
children: { name:"r1" }
}
});
Затем, когда я запрашиваю БД:
db.data.find({
children: { name: "r1" }
});
Результаты:
{
"_id" : ObjectId("4f36121082b4c129cfce3901"),
"children" : [ { "name" : "r1" } ],
"name" : "s1"
}
Что не имеет для меня никакого смысла, поскольку я ожидал бы 1028 * следующего:
{
"name": "r1"
}
Есть ли лучший способ вставки данных в MongoDB, чтобы при выполнении запросов я извлекал отдельные объекты, а не все дерево? Или, возможно, лучший способ написания запроса "find"?