我有一个名为" inserogato"的大集合(68017个文档),从PostgreSQL导入。 在PostgreSQL中,表格的主要关键是" inserogato"是" id",但是MongoDB创建了一个名为" _id"的默认主键。使用ObjectId类型。所以我想复制字段中的所有值" id"到现场" _id"。
我已经尝试了这个,但它只更新了一个文档:
db.inserogato.find({"_id" : ObjectId("5abe1d264887072726b19b2e")}).forEach(function(doc) {
var oldId = doc._id;
doc._id = NumberLong(doc.id);
db.inserogato.remove({ _id: oldId });
db.inserogato.save(doc);
});
答案 0 :(得分:0)
Emanuele,您无法删除或编辑MongoDB集合的_id。 如果这是你需要完成的,你需要创建一个具有正确id的新集合。
步骤:
如果您想关注您的示例,则需要遍历所有集合(不要指定_id)
db.inserogato.find({}).forEach(function(doc) {
var oldId = doc._id;
doc._id = NumberLong(doc.id);
db.inserogato.remove({ _id: oldId });
db.inserogato.save(doc);
});