MongoDB 4.2.1-updateMany:错误:更新操作文档必须包含原子运算符

问题描述 投票:0回答:1

所以我在使用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

我没有尝试使用外壳,但我想它会告诉我同样的事情。

mongodb robo3t
1个回答
0
投票

updateOne()updateMany()的第二个参数必须为Object,所以基本上您使用的是错误的语法,请尝试这样:

db.getCollection('myCollections').updateMany({
    randomId: ObjectId("......."),
}, {
    $set: {
        "myObject.myField": "$myField"
    },
    $unset: {
        "myField": 1
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.