如何在批量更新中为每个文档创建唯一的对象ID?
我试过了,
db.foo.update({ objectId: null }, { $set: { objectId: new ObjectId() }}, { multi: true })
但是这给了我每个文档的相同对象ID。
答案 0 :(得分:3)
由于您要为每个文档应用唯一值,因此您需要遍历集合并一次更新一个文档。
在shell中:
db.foo.find({ objectId: null }).forEach(function(doc) {
doc.objectId = new ObjectId();
db.foo.save(doc);
});
答案 1 :(得分:1)
目前,您无法在MongoDb中的单个命令中更新多个文档。您可以使用一组通用的更改/更新来更新多个文档,但不能对每个文档进行唯一更改。您需要创建一个循环来迭代shell中的每个文档或您喜欢的编程语言。
答案 2 :(得分:0)
您可以像这样在 MongoDB 中生成对象 ID。您可以遍历您的文档并使用此 mongo 对象 ID。
const ObjectId = require("mongodb").ObjectID;
const id = new ObjectId
console.log(id)