json - MongoDB 更改 DBrefs

标签 json mongodb database

有没有办法更改 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/

相关文章:

c# - 如何使用 MongoDB 实现 ASP.NET Core 3.1 Identity?

mysql两次加入同一张表运行速度很慢,结果错误

MySQL外键选择多个选项

json - Django 没有发送正确的 json 响应

json - 向 JSON 对象添加新的键值对

java - jackson :@JsonIdentityInfo 对象而不是 id

database - 在 perl 中选择没有准备好的语句

javascript - JSON 和 JS 回调函数

javascript - 使用 mongodb 收集 meteor 时出现重复的键

java - 检索数组中的子文档作为 DBObject(s)