java - MongoDB with Java - 查找文档并嵌套插入更新

标签 java mongodb apache-storm

我有一个这样的文档:

{
    timestamp_hour: ISODate("xxx"),
    userid: "xxx",
    type: "xxx",
    balances: {
        1: {input: 100, output: 200},
        2: {input: 200, output: 300},
        500: {input: 5000, output: 5500},
        ...
    }
}

我想将新的数字对:{输入:xxx,输出:yyy}插入到余额中,如果timestamp_houruserid 两者都匹配。 (据我所知,它更像是一个 upsert)

代码会怎样?我使用的是 Java 8 和 org.apache.storm.core 1.1。

最佳答案

这里没有更新插入。只需在找到文档后在余额中添加一个新的嵌入字段即可。

MongoClient mc = new MongoClient();
MongoDatabase db = mc.getDatabase("db");
MongoCollection col = db.getCollection("col");

Bson query = Filters.and(Filters.eq("timestamp_hour", timestampHour), Filters.eq("userid", userId));
Document uDoc = new Document();
uDoc.put("input", xxx);
uDoc.put("output", yyy);

Bson update = Updates.set("balances." + number, uDoc);

col.updateOne(query, update);

关于java - MongoDB with Java - 查找文档并嵌套插入更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48281631/

相关文章:

java - Eclipse RCP - 以编程方式更改 plugin.xml?重新加载?

hbase - 从 Apache Storm bolt 在 HBase 中插入和删除值的方法

java - Hibernate 命名查询 Order By 参数

java - JHAT 无法分析内存转储

mongodb - 正在寻找 DynamoDB/MongoDB+Redis 组合?

javascript - Mongodb $inc 按变量

java - 隐藏 Storm UI 的配置值

java - InvalidRequestException(为什么 :Unknown identifier

java - 来自 Netty 5.x 处理程序的同步调用(阻塞)

php - 如何使用mongodb在内部数组中搜索字符串?