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

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

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

最佳答案

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

"items.$.damage"

关于java - 更新(递增)MongoDB 子文档中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12536644/

相关文章:

未找到 JavaFX JDK

java - jackson :如何反序列化 JSON 数组中的空元素

java - MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

mongodb - 将新字段添加到具有现有字段值的集合

c# - 在 SQL Server 上存储 NoSQL 数据?

java - java实现循环链​​表

java - 慢慢增加 jButton 的大小

node.js - 使用 Angular.js 将 mongoDB 对象中的项目从上到下排列到列表中

mysql - Mongodb 与 MySql 搜索优化

database - 为什么RDF存储不包含在NoSQL数据库类型中