Soh*_*ham 1 crud insert-update mongodb
我想更新其中一个文档中的 _id 字段(如下所示)。
{
_id : ObjectId("586d9d5d23352af1a4aa05f7"),
name: "Soham",
age : 99,
city : "XYZ"
}
Run Code Online (Sandbox Code Playgroud)
所以我运行了以下步骤:
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);
Run Code Online (Sandbox Code Playgroud)
前 3 行没有抛出任何错误,但是当我运行 insert 命令时,它抛出了错误。任何人都可以让我知道出了什么问题。
提前致谢!!!
抛出错误,因为您无法更新 _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")});
Run Code Online (Sandbox Code Playgroud)