Mongodb更新所有具有唯一id的文档

abi*_*tra 5 mongodb node.js mongodb-query node-mongodb-native

我收集了products近 10 万份带有名字的文档。我想引入一个新的密钥,称为 在所有文档中secondaryKey具有唯一值。uuid我使用nodejs.

我面临的问题:-

当我尝试以下查询时,

db.collection('products').updateMany({},{"$set":{secondaryKey: uuid()}});
Run Code Online (Sandbox Code Playgroud)

在这里它更新所有具有相同值的文档uuid

我尝试使用循环来一一更新文档,但这里的问题是我没有filter价值,updateOne因为我想更新所有文档。

任何人都可以在这里帮助我吗?谢谢 :)

Pur*_*jax 5

如果您使用的 MongoDB 版本 >= 4.4 您可以尝试以下操作:

db.products.updateMany(
    {},
    [
        {
            $set: {
                secondaryKey: {
                    $function: {
                        body: function() {
                            return UUID().toString().split('"')[1];
                        },
                        args: [],
                        lang: "js"
                    }
                }
            }
        }
    ]
);
Run Code Online (Sandbox Code Playgroud)

输出

[
  {
    "_id": ObjectId("..."),
    "secondaryKey": "f41b15b7-a0c5-43ed-9d15-69dbafc0ed29"
  },
  {
    "_id": ObjectId("..."),
    "secondaryKey": "50ae7248-a92e-4b10-be7d-126b8083ff64"
  },
  {
    "_id": ObjectId("..."),
    "secondaryKey": "fa778a1a-371b-422a-b73f-8bcff865ad8e"
  }
]
Run Code Online (Sandbox Code Playgroud)