0

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

当我说

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

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

4

2 回答 2

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); 
于 2013-03-03T03:55:41.637 回答
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);
于 2013-03-03T13:10:53.863 回答