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

MongoDB with Java - find a document and nested insert update

我有这样的文档:

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

我想将新的一对 number: {input: xxx, output: yyy} 插入 balances,如果 timestamp_houruserid 都匹配。 (有人告诉我,它更像是 upsert

代码会怎样?我与 Java 8 和 org.apache.storm.core 1.1.

这里没有upsert。找到文档时,只需在 balances 中添加一个新的嵌入字段。

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