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

ike*_*8me 4 java mongodb nosql

如果我有一个包含文档和子文档的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);
}
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*yHK 8

都不是.如果要仅使用匹配来增加数组元素的damage值,则需要使用位置运算符来向运算符标识该元素.所以这是:itemssubDocID$ $inc

"items.$.damage"
Run Code Online (Sandbox Code Playgroud)