我需要更新多个收集文档的字段。该字段是 DBRef ,我只需要更改 $ ref 字段值。
其中一份文件是这样的:
{“_ id”:{“$ oid”:“50ab682bd3155502a75c7cf6”},“codeId”:{“$ ref” :“version”,“$ id”:{“$ oid”:“511cb7d5696bdbaf4c85ebb1”}}}
我想要的最终结果是:
{“_ id”:{“$ oid”:“50ab682bd3155502a75c7cf6”},“codeId”:{“$ ref” :“ 代码 ”,“$ id”:{“$ oid”:“511cb7d5696bdbaf4c85ebb1”}}}
我试过这样的话:
db.collection.update(
{},
{$set:{"codeId":{$ref:"code"}}},
false,
true
);
问题是 $ id 丢失(设为null)
{“_ id”:{“$ oid”:“50ab682bd3155502a75c7cf6”},“codeId”:{“$ ref” :“ 代码 ”,“$ id”:{“$ oid”: null }}}
如何保留 $ id ?
由于
答案 0 :(得分:1)
您可以使用点表示法来更新嵌套文档。请注意,每当使用点符号时,都应将其放在引号之间。
db.collection.update(
{},
{ $set:{
"codeId.$ref":"code"
}
},
false,
true
);
您可以阅读有关Database References的更多信息。