MongoDB - 更新了$ ref值无法查询新值

时间:2014-07-31 23:04:30

标签: javascript mongodb

我发布了以下问题,该问题已得到正确回答:

MongoDB - Updating only $ref from DBRef field type

尽管如此,当我执行这样的find方法时:

  

{“codeId”:{“$ ref”:“code”,“$ id”:{“$ oid”:   “4ff1c08c6ef25616ce21c4b6”}}}

该文件未被退回......任何想法为什么?

更新后,文档存储如下:

  

{“_ id”:{“$ oid”:“5097ae1cd3159eb52d05574c”},“codeId”:{“$ ref”   :“code”,“$ id”:{“$ oid”:“4ff1c08c6ef25616ce21c4b6”}}}

顺便说一句,使用uMongo GUI,如果我在这个存储文档上选择Update选项并保存它,而不进行任何更改,然后再次进行查询查询,则查询返回文档。

由于

1 个答案:

答案 0 :(得分:0)

这显然是那些DBRef" tweaky"事情...

作为临时(但可能是正确的)修复,我设法解决了执行此javascript过程的问题:

var cursor = db.menu.find( { "codeId.$ref" : "version" } );

while( cursor.hasNext() )
{
    var document = cursor.next();

    db.menu.update(
        document,
        { $set: {"codeId" : DBRef("code", document.codeId.$id) }},
        { upsert:  false, multi: true }
    );
}

尽管如此,我还是不认为这是达到我想要的最佳方式......任何其他涉及较少线路的解决方案?