更新MongoDB中的_id字段

时间:2017-01-07 00:30:52

标签: mongodb crud insert-update

我想在其中一个文档中更新我的_id字段(如下所示)。

{
_id : ObjectId("586d9d5d23352af1a4aa05f7"),
name: "Soham",
age : 99,
city : "XYZ"
}

所以我执行了以下步骤:

var doc = db.names.find({name:"Soham"});
doc._id = 111 ; -- 111 is not present in that collection for any document
db.names.remove({_id:ObjectId("586d9d5d23352af1a4aa05f7")});
db.names.insert(doc);

前3行没有抛出任何错误,但是当我运行insert命令时,它抛出了错误。任何人都可以让我知道出了什么问题。

提前致谢!!!

1 个答案:

答案 0 :(得分:3)

抛出错误,因为无法更新_id字段

为了设置一个新的id,首先你找到文件(使用findOne,因为你只搜索1个文件),而不是需要创建一个带有新id的新文件并插入它,比我们可以安全地删除旧文件:

var doc = db.names.find_one({name:"Soham"});
doc._id = 111 ; 
db.names.insert(doc);
db.names.remove({_id:ObjectId("586d9d5d23352af1a4aa05f7")});