gpt4 book ai didi

json - MongoDB 更改 DBrefs

转载 作者:可可西里 更新时间:2023-11-01 09:37:40 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com