如何使用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
的类似物是什么?
答案 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);