我的 MongoDb 資料庫中有這個資料結構:
"menu": [
{
"dishCategory":"61e6089f209b802518e2b4a4",
"dishMeals": [
{
"dishMealName": "Burger King",
"dishMealIngredients": "Burger lepinja, bbq sos, berlin sos, zelena"
"dishMealPrice": 5
}
]
}
]
我如何在discMeals中以確切的discCategory推送新物件(我通過 req.body 提供了 disceCategory id、newDish 物件和餐廳的 _id)我已經嘗試過了,但沒有任何改變:
await Restaurants.updateOne(
{
'_id' : _id,
'menu.dishCategory' : dishCategoryId
},
{
$push : {
'menu.$.dishMeals' : newDish
}
}
);
uj5u.com熱心網友回復:
- 用于
arrayFilters過濾陣列欄位中的嵌套檔案,然后$push如果滿足過濾條件arrayFilters。
db.collection.update({
"_id": _id,
"menu.dishCategory": dishCategoryId
},
{
$push: {
"menu.$[menu].dishMeals": newDish
}
},
{
arrayFilters: [
{
"menu.dishCategory": dishCategoryId
}
]
})
示例 Mongo Playground
uj5u.com熱心網友回復:
您可以使用查詢中的arrayFilters配置來執行此update操作:
db.collection.update({
"restaurant_id": 1
},
{
"$push": {
"menu.$[element].dishMeals": {
"dishMealName": "Best Burger",
"dishMealIngredients": "Best burger in town",
"dishMealPrice": 10
}
}
},
{
"arrayFilters": [
{
"element.dishCategory._id": "61e6089f209b802518e2b4a4"
}
]
})
作業示例
uj5u.com熱心網友回復:
您可以在這里閱讀他們提供的問題和解決方案,希望這對您有所幫助。
db.collection.update({
"_id": 1,
"menu.dishCategory": "61e6089f209b802518e2b4a4"
},
{
$push: {
"menu.$.dishMeals": newMeal
}
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/417227.html
標籤:
上一篇:匹配MongoDB中的多個條件
