我在mongoDB
中有如下数据
_id : 5d91caf461f93f13e48ac307,
restaurants : [
{
name : 'grace restaurant',
menus : [
{
menu_name : 'chicken soup',
price : 100
},
{
menu_name : 'Biriyani',
price : 250
},
]
},
{
name : 'river side restaurant',
menus : [
{
menu_name : 'veg lollipop',
price : 47
},
{
menu_name : 'Grill chicken',
price : 210
},
]
}
]
现在,我需要将river side restaurant's
菜单“ Grill chicken's
”的价格更新为310。
我该如何使用mongoose
或mongoDB
函数,我使用了很多不同的函数,但是没有用,请帮我找到它。
谢谢
答案 0 :(得分:2)
我们必须使用数组过滤器。
以下是示例:
db.collection.update({},
{
$set:{
"restaurants.$[restaurantFilter].menus.$[menuFilter].price": 310
}
},
{
"arrayFilters":[
{
"restaurantFilter.name":"river side restaurant"
},
{
"menuFilter.menu_name":"Grill chicken"
}
]
})
更新前:
{
"_id" : "5d91caf461f93f13e48ac307",
"restaurants" : [
{
"name" : "grace restaurant",
"menus" : [
{
"menu_name" : "chicken soup",
"price" : 100
},
{
"menu_name" : "Biriyani",
"price" : 250
}
]
},
{
"name" : "river side restaurant",
"menus" : [
{
"menu_name" : "veg lollipop",
"price" : 47
},
{
"menu_name" : "Grill chicken",
"price" : 210
}
]
}
]
}
更新后:
{
"_id" : "5d91caf461f93f13e48ac307",
"restaurants" : [
{
"name" : "grace restaurant",
"menus" : [
{
"menu_name" : "chicken soup",
"price" : 100
},
{
"menu_name" : "Biriyani",
"price" : 250
}
]
},
{
"name" : "river side restaurant",
"menus" : [
{
"menu_name" : "veg lollipop",
"price" : 47
},
{
"menu_name" : "Grill chicken",
"price" : 310
}
]
}
]
}