我发布了以下问题,该问题已得到正确回答:
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选项并保存它,而不进行任何更改,然后再次进行查询查询,则查询返回文档。
由于
答案 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 }
);
}
尽管如此,我还是不认为这是达到我想要的最佳方式......任何其他涉及较少线路的解决方案?