MongoDB - 仅从DBRef字段类型更新$ ref

时间:2014-07-31 11:13:38

标签: javascript mongodb

我需要更新多个收集文档的字段。该字段是 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

由于

1 个答案:

答案 0 :(得分:1)

您可以使用点表示法来更新嵌套文档。请注意,每当使用点符号时,都应将其放在引号之间。

db.collection.update(
   {}, 
   { $set:{
       "codeId.$ref":"code"
     }
   },
   false,
   true
);

您可以阅读有关Database References的更多信息。