是否有方法更改MongoDB集合引用?
我指的是参考中的值。
我不能直接创建链接,因为数据库正在使用中。
我的结构是这样的
{
"_id" : ObjectId("4e7c6b47e4b0dea06288ad21"),
"license" : "ABC123",
"model" : "911",
"make" : "Porsche",
"owner" : {
"$ref" : "users",
"$id" : "Test User"
}
}
我想把身份证改成
{ "$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(..)”。