Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongodb使用唯一id更新所有文档_Node.js_Mongodb_Mongodb Query_Node Mongodb Native - Fatal编程技术网

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
,只需为每个文档设置一个unquie
secondaryKey
,因为循环过程会更重。顺便说一句,这个问题让我想到:太好了,它可以工作。