gpt4 book ai didi

mongodb - 如何在更新或聚合中生成唯一的 ObjectId?

转载 作者:行者123 更新时间:2023-12-05 05:52:50 24 4
gpt4 key购买 nike

我的集合中的一些子文档缺少 _id。我写了这段 mongo-shell 代码来尝试添加它们。

db.jobs.updateMany({},
{
$set: {
"artifacts.$[elem]._id": new ObjectId()
}
},
{
arrayFilters: [
{
"elem._id": {
$exists: false
}
}
]
})

此代码成功地为所有适当的子文档提供了 _id,但它为所有子文档提供了相同 id。关于如何使 ID 独一无二的任何想法?

最佳答案

查询

  • 使用 $function 的管道更新需要 MongoDB >=4.4
  • 我想不出不用 javascript 生成它的方法,但是使用 javascript 很简单,如下所示
  • js会在服务器上运行

*代码可以在使用管道或聚合管道进行更新时运行。*如果我们没有 MongoDB 聚合运算符,我们总是可以在 4.4 之后使用 javascript

Test code here

db.collection.update({},
[
{
"$set": {
"artifacts": {
"$function": {
"body": "function (ar) {return ar.map(x => { if(x.hasOwnProperty('_id')) return x; else {x[\"_id\"]=new ObjectId(); return x;}})}",
"args": ["$artifacts"],
"lang": "js"
}
}
}
}
],
{
"multi": true
})

关于mongodb - 如何在更新或聚合中生成唯一的 ObjectId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70028674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com