我有一个巨大的集合(68017个文档),名为“inserogato”,从PostgreSQL导入 . 在PostgreSQL中,表“inserogato”的主键是“id”,但MongoDB使用ObjectId类型创建名为“_id”的默认主键 . 所以我想将字段“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);
});
1 回答
Emanuele,您无法删除或编辑MongoDB集合的_id . 如果这是您需要完成的任务,则需要使用正确的id创建一个新集合 .
脚步:
复制集合(原件/复制)
删除原件
使用正确的_id重新创建原始文件
如果你想跟随你的例子,你需要迭代所有集合(不要指定_id)