有没有办法更改 MongoDB 集合引用? 对于变化,我指的是引用中的值。 我不能只创建直接链接,因为数据库正在使用中。 我的结构看起来像这样
{
"_id" : ObjectId("4e7c6b47e4b0dea06288ad21"),
"license" : "ABC123",
"model" : "911",
"make" : "Porsche",
"owner" : {
"$ref" : "users",
"$id" : "Test User"
}
}
我想改ID像
{ "$ref" : "users", "$id" : "NEW USER"}
最佳答案
当然可以,但不能直接使用 $set :
> db.test.save({a:{$ref:"users", $id:"Test User"}})
> db.test.find()
{ "_id" : ObjectId("4f1e85489d086ee4511551b6"), "a" : DBRef("users", "Test User") }
> db.test.update({}, {$set:{'a.$id':"NEW USER"}})
> db.test.find()
{ "_id" : ObjectId("4f1e85489d086ee4511551b6"), "a" : { "$id" : "NEW USER", "$ref" : "users" } }
如您所见,这会破坏引用,因为 DBRef 规范要求 $ref 和 $id 字段的顺序首先是 $ref。
你可以像这样更新它:
> db.test.update({}, {$set:{a:{$ref:"users", $id:"NEW USER"}}})
> db.test.find()
{ "_id" : ObjectId("4f1e858b9d086ee4511551b7"), "a" : DBRef("users", "NEW USER") }
或者,如果您在 shell 中,则只使用“new DBRef(..)”。
关于json - MongoDB 更改 DBrefs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8985039/