所以我在使用Robo 3T的mongodb 4.2.1中遇到了这个问题。我想通过移动另一个对象内部的字段来更新特定文档。
像这样使用update()
可以正常工作。
db.getCollection('myCollections').update(
{
randomId: ObjectId("......."),
},
[
{ $set: { "myObject.myField": "$myField" } },
{ $unset: [ "myField" ] }
])
但是当我想像这样使用updateMany()
更新我的所有文档时。
db.getCollection('myCollections').updateMany(
{
randomId: ObjectId("......."),
},
[
{ $set: { "myObject.myField": "$myField" } },
{ $unset: [ "myField" ] }
])
我有一个错误
Failed to execute script.
Error: the update operation document must contain atomic operators
Details:
DBCollection.prototype.updateMany@src/mongo/shell/crud_api.js:625:1
@(shell):1:1
我没有尝试使用外壳,但我想它会告诉我同样的事情。
updateOne()
和updateMany()
的第二个参数必须为Object
,所以基本上您使用的是错误的语法,请尝试这样:
db.getCollection('myCollections').updateMany({
randomId: ObjectId("......."),
}, {
$set: {
"myObject.myField": "$myField"
},
$unset: {
"myField": 1
}
})