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);
}

質問:「damage」または「items.damage」を参照しますか?

4

1 に答える 1

8

ない。一致する配列要素のdamage値だけをインクリメントする場合は、位置演算子を使用してその要素を演算子で識別する必要があります。っていうことは:itemssubDocID$ $inc

"items.$.damage"
于 2012-09-21T19:17:54.837 に答える