3

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

我试过了,

db.foo.update({ objectId: null }, { $set: { objectId: new ObjectId() }}, { multi: true })

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

4

3 回答 3

5

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

在外壳中:

db.foo.find({ objectId: null }).forEach(function(doc) {
    doc.objectId = new ObjectId();
    db.foo.save(doc);
});
于 2014-03-03T22:15:36.187 回答
1

目前,您无法在 MongoDb 的单个命令中更新多个文档。您可以使用一组通用更改/更新来更新多个文档,但您不能对每个文档进行唯一更改。您需要创建一个循环来遍历 shell 或您最喜欢的编程语言中的每个文档。

于 2014-03-03T22:17:02.380 回答
0

您可以像这样在 MongoDB 中生成对象 ID。您可以遍历您的文档并使用此 mongo 对象 ID。

const ObjectId = require("mongodb").ObjectID;
const id = new ObjectId 
console.log(id)
于 2021-02-16T09:29:33.273 回答