【问题标题】:MongoDB - Updating only $ref from DBRef field typeMongoDB - 仅从 DBRef 字段类型更新 $ref
【发布时间】:2014-07-31 11:13:38
【问题描述】:

我需要更新多个集合文档的字段。该字段是一个 DBRef,我只需要更改 $ref 字段值。

其中一个文件是这样的:

{ "_id" : { "$oid" : "50ab682bd3155502a75c7cf6"} , "codeId" : { "$ref" : "版本" , "$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" : "code" , "$id" : { "$oid" : null}}}

我如何保留 $id

谢谢

【问题讨论】:

    标签: javascript mongodb


    【解决方案1】:

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

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

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

    【讨论】:

    • 但我不想明确定义它,因为这是一个更新,并且 $id 已经在原始文档上定义了。
    • 请注意,由于The DBRef $ref field must be following by a $id field 错误,这可能不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2023-04-09
    • 2020-07-20
    • 1970-01-01
    • 2020-12-22
    • 2012-02-01
    相关资源
    最近更新 更多