是否有方法更改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(..)”。

10-07 17:59