如何更新一个MongoDB文档的_id?
我想更新一个文档的_id MongoDB。 我知道这不是一个很好的实践。 但是由于某些技术原因,我需要更新它。 但是,如果我尝试更新它,我有:
> db.clients.update({'_id':ObjectId("4cc45467c55f4d2d2a000002")}, {'$set':{'_id':ObjectId("4c8a331bda76c559ef000004")}}); Mod on _id not allowed
而更新不是。 我怎样才能真正更新它?
你不能更新它。 您必须使用新的_id
保存文档,然后删除旧的文档。
// store the document in a variable doc = db.clients.findOne({_id: ObjectId("4cc45467c55f4d2d2a000002")}) // set a new _id on the document doc._id = ObjectId("4c8a331bda76c559ef000004") // insert the document, using the new _id db.clients.insert(doc) // remove the document with the old _id db.clients.remove({_id: ObjectId("4cc45467c55f4d2d2a000002")})
要做到这一点,你也可以使用一个循环(基于Niels的例子):
db.status.find().forEach(function(doc){ doc._id=doc.UserId; db.status_new.insert(doc); }); db.status_new.renameCollection("status", true);
在这种情况下,UserId是我想要使用的新ID