Node.js Mongodb使用唯一id更新所有文档
我收集了名为Node.js Mongodb使用唯一id更新所有文档,node.js,mongodb,mongodb-query,node-mongodb-native,Node.js,Mongodb,Mongodb Query,Node Mongodb Native,我收集了名为的产品,拥有近10万份文档。我想引入一个名为secondaryKey的新密钥,它在所有文档中都具有唯一值。 我使用nodejs执行此操作 我面临的问题是:- 当我尝试下面的查询时 db.collection('products').updateMany({},{"$set":{secondaryKey: uuid()}}); 在这里,它使用相同的uuid值更新所有文档 我尝试使用loop逐个更新文档,但问题是我在updateOne中没有filter值,因为我想更
的产品
,拥有近10万份文档。我想引入一个名为secondaryKey
的新密钥,它在所有文档中都具有唯一值。
我使用nodejs
执行此操作
我面临的问题是:-
当我尝试下面的查询时
db.collection('products').updateMany({},{"$set":{secondaryKey: uuid()}});
在这里,它使用相同的uuid
值更新所有文档
我尝试使用loop逐个更新文档,但问题是我在updateOne
中没有filter
值,因为我想更新所有文档
谁能帮我一下吗。
谢谢:)因为每个文档中输入的值不同,所以必须使用循环
在循环中,您必须更新迭代的当前文档。因此,如果您使用的是MongoDB version>=4.4,您必须使用
更新One中的\u id
进行过滤,您可以尝试以下操作:
db.products.updateMany(
{},
[
{
$set:{
辅助键:{
$function:{
正文:函数(){
返回UUID().toString().split(“”)[1];
},
args:[],
朗:“js”
}
}
}
}
]
);
输出
[
{
“_id”:ObjectId(“…”),
“辅助键”:“f41b15b7-a0c5-43ed-9d15-69dbafc0ed29”
},
{
“_id”:ObjectId(“…”),
“辅助键”:“50ae7248-a92e-4b10-be7d-126b8083ff64”
},
{
“_id”:ObjectId(“…”),
“辅助键”:“fa778a1a-371b-422a-b73f-8bcff865ad8e”
}
]
无论如何,我们都可以通过updateMany
来实现,只需增加secondaryKey
,我以后也可以使用uuid
,只需为每个文档设置一个unquiesecondaryKey
,因为循环过程会更重。顺便说一句,这个问题让我想到:太好了,它可以工作。