Mongodb位置运算符为';t匹配

Mongodb位置运算符为';t匹配,mongodb,Mongodb,我必须在这里遗漏一些小细节。我的目标是将所有活动更新为ObjectId(“5e3e3c046e76599afe96d50f”) 我正在尝试执行以下查询: db.getCollection(“项目”).updateMany( { “活动id”:{$ne:ObjectId(“5e3e3c046e76599afe96d50f”)} }, { $set:{“活动.$.totalPointsPossible”:5} }) 我得到以下错误: WriteError({ “索引”:0, "守则":二,, “e

我必须在这里遗漏一些小细节。我的目标是将所有活动更新为
ObjectId(“5e3e3c046e76599afe96d50f”)

我正在尝试执行以下查询:

db.getCollection(“项目”).updateMany(
{
“活动id”:{$ne:ObjectId(“5e3e3c046e76599afe96d50f”)}
},
{
$set:{“活动.$.totalPointsPossible”:5}
})
我得到以下错误:

WriteError({
“索引”:0,
"守则":二,,
“errmsg”:“位置运算符未从查询中找到所需的匹配项。”,
“op”:{
“q”:{
“活动编号”:{
“$ne”:对象ID(“5e3e3c046e76599afe96d50f”)
}
},
“u”:{
“$set”:{
“活动.$.TotalPoints可能”:5
}
},
“多元”:没错,
“向上插入”:错误
}
})
但是,如果我执行此查询:

db.getCollection(“projects”).find({“activities.”id:{$ne:ObjectId(“5e3e3c046e76599afe96d50f”)})
我得到了预期的返回文件。我不能完全确定
.find()
如何匹配
活动的
\u id
字段,然后位置运算符不匹配

模式

{
标题:{
类型:字符串,
必需:[正确,“项目需要标题”]
},
...
活动:[
{
姓名:{
类型:字符串,
必填项:true
}
...
]
}
],
createdOn:{type:Date,默认值:Date.now}
}

文档中缺少此部分:

如果查询使用否定运算符(如$ne、$not或$nin)匹配数组,则不能使用位置运算符更新此数组中的值

但是,如果查询的求反部分位于$elemMatch表达式内,则可以使用位置运算符更新此字段


文档中缺少此部分:

如果查询使用否定运算符(如$ne、$not或$nin)匹配数组,则不能使用位置运算符更新此数组中的值

但是,如果查询的求反部分位于$elemMatch表达式内,则可以使用位置运算符更新此字段


您希望更新的目标是什么?如果要更新所有活动数组,只需编写
$set:{“activities.totalPointsPossible”:5}
。查看mongo手册了解更多信息:我想更新不等于给定ObjectId的活动(“5e3e3c046e76599afe96d50f”)。我更新了我的问题以反映这一点。您希望更新的目标是什么?如果要更新所有活动数组,只需编写
$set:{“activities.totalPointsPossible”:5}
。查看mongo手册了解更多信息:我想更新不等于给定ObjectId的活动(“5e3e3c046e76599afe96d50f”)。我更新了我的问题以反映这一点。我认为开发人员不应该阅读文档。谢谢!也可能是这样:“positional$操作符充当与查询匹配的第一个元素的占位符”,即使没有否定,它也不会更新所有子文档。我认为开发人员不应该阅读文档。谢谢!可能还有这样一个:“positional$操作符充当与查询匹配的第一个元素的占位符”,即使没有否定,它也不会更新所有子文档