更新(递增)MongoDB中子文档中的值

时间:2012-09-21 19:01:20

标签: java mongodb nosql

如果我有一个包含文档和子文档的MongoDB集合,如图所示:

enter image description here

并且,如果我想在每次调用方法时将“伤害”增加1:

private final static void incrementCount(String docID, String subDocID) {
    BasicDBObject query = new BasicDBObject();
    query.put("_id", docID);
    query.put("items.id", subDocID);
    BasicDBObject incValue = new BasicDBObject("damage", 1); // or "items.damage" ???
    BasicDBObject intModifier = new BasicDBObject("$inc", incValue);
    badgesCollection.update(query, intModifier, false, false, WriteConcern.SAFE);
}

问题:我是指“损坏”还是“items.damage”?

1 个答案:

答案 0 :(得分:8)

都不是。如果您只想使用匹配的damage增加items数组元素的subDocID值,则需要使用$ positional operator将该元素标识为$inc运算符。所以它是:

"items.$.damage"