mongodb更新字段异步驱动程序

时间:2013-03-02 12:39:22

标签: mongodb asynchronous driver

如何使用mongodb allanbank异步驱动程序更新集合中的字段?

当我说

db.getCollection("coll_name").update( //$NON-NLS-1$
                 BuilderFactory.start().add("_id", docObjectId),
                 BuilderFactory.start().add("field", value)); //$NON-NLS-1$

我将必要的字段更新为新值,但文档中的所有其他字段都消失了。换句话说,mongo shell中$set的类似物是什么?

2 个答案:

答案 0 :(得分:2)

您需要将$ set运算符直接与子文档一起使用。如,

DocumentBuilder update = BuilderFactory.start();
update.push("$set").add("field", value); //$NON-NLS-1$

db.getCollection("coll_name").update( //$NON-NLS-1$
             BuilderFactory.start().add("_id", docObjectId),
             update); 

答案 1 :(得分:0)

我非常感谢Rob Moore的回答,他的帮助非常宝贵。但是有一点点不准确:我必须添加pop()以便一切正常。所以:

DocumentBuilder update = BuilderFactory.start();
update = (DocumentBuilder)update.push("$set").add("field", value).pop(); //$NON-NLS-1$ //$NON-NLS-2$

db.getCollection("coll").update( //$NON-NLS-1$
    BuilderFactory.start().add("_id", docObjectId), //$NON-NLS-1$
    update);