为集合中的每个文档生成一个新的 Mongo 对象 ID?

Jam*_*hon 3 mongodb objectid

您如何为批量更新中的每个文档创建唯一的对象 ID?

我试过了,

db.foo.update({ objectId: null }, { $set: { objectId: new ObjectId() }}, { multi: true })
Run Code Online (Sandbox Code Playgroud)

但这为每个文档提供了相同的对象 ID。

Joh*_*yHK 5

因为您要为每个文档应用一个唯一值,所以您需要迭代您的集合并一次更新一个文档。

在外壳中:

db.foo.find({ objectId: null }).forEach(function(doc) {
    doc.objectId = new ObjectId();
    db.foo.save(doc);
});
Run Code Online (Sandbox Code Playgroud)