【发布时间】:2021-11-28 04:30:22
【问题描述】:
在一个 db 中有多个文档,其中一个如下所示:
{
"searchWord":[
"pizz",
"pizza"
],
"result":[
{
"idMeal":1,
"strMeal":"test1",
"strInstructions":"test1"
},
{
"idMeal":2,
"strMeal":"test2",
"strInstructions":"test2"
}
]
}
试图像这样解决它:
例如:
db.meals.updateOne(
{
"searchWord": "pizz",
"result": { $elemMatch: { idMeal: "1" } }
},
{ $set: { 'result.$.strMeal' : "UPDATED" } }
)
这不会像我写的那样只更新第二个相应的子文档
{ $set: { 'result.1.strMeal' : "更新" } }
(这将导致第二个子文档被更新)
这是另一个想法(相同的结果)
db.meals.updateOne(
{ searchWord: "pizz", 'result.idMeal': 319012 },
{ $set: { "result.$.strMeal" : "fsdf" } }
)
我似乎不明白的是它正是 mongo 提供的语法,但它不起作用
“$”运算符没有选择我要更新的对象数组
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query