我有一个这样的文档:
{
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_hour
和userid
两者都匹配。 (据我所知,它更像是一个 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/