4

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

在此处输入图像描述

而且,如果我想在每次调用该方法时将“损坏”增加 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”?

4

1 回答 1

8

两者都不。如果您只想增加匹配的数组元素的damage值,则需要使用位置运算符将该元素标识给运算符。所以是:itemssubDocID$ $inc

"items.$.damage"
于 2012-09-21T19:17:54.837 回答