Эй, я пытаюсь обновить вложенный объект в моей MongoDB.
Их структура
[
{
"_id": "5871010d1ff9831574e7178d",
"created_at": "2017-01-07T14:54:05.791Z",
"updated_at": "2017-01-07T14:54:05.791Z",
"place_id": "ChIJ1eTO6eS1vkcRL_mX2RWUKo4",
"name": "Kunstwerk Restaurant Gummersbach",
"__v": 0,
"cooks": [],
"menus": [
{
"58727068ba8d6c04a0ea331f": [
{
"intolerances": {
"intolerance" : "false"
...
},
"nutritiondata" : [
{...}
],
"cookname": "[email protected]",
"menuname": "MenünameX"
}
]
}
]
Вложенный идентификатор в меню — это еще один идентификатор документа MongoDB, который создается динамически.
Я пытаюсь обновить имя меню, но не могу получить к нему доступ, так как монго всегда возвращает ноль или не находит элемент, поскольку ему нужно искать только ключ, а не пару ключ-значение.
Что я тестировал до сих пор:
db.restaurants.update({ 'menus.58727068ba8d6c04a0ea331f', { $set : {"menus.$.menuname" : "test"}}});
db.restaurants.findOne({ 'menus.58727068ba8d6c04a0ea331f' : "58727068ba8d6c04a0ea331f"});
db.restaurants.find({ menus : { $elemMatch : {"58727068ba8d6c04a0ea331f": "58727068ba8d6c04a0ea331f" }}});
db.restaurants.findOne({ menus : { $eq : "58727068ba8d6c04a0ea331f" }});