更新mongodb中的操作

时间:2019-10-06 16:53:47

标签: java mongodb

给出以下数据,并且我正在将java与驱动程序3.10.1一起使用

    "room_price" : "500",
    "overall_price" : 10000,
    "total_paid" : 400,
    "paid" : [
            {
                    "price" : "200",
                    "Date" : ISODate("2019-10-06T00:00:00Z")
            },
            {
                    "price" : "200",
                    "Date" : ISODate("2019-10-06T00:00:00Z")
            }
    ],

仅当增量操作之后total_paid低于total_paid金额时,如何将新添加的价格添加到totalpaid中。注意到我已经尝试过max()和inc(),但无法达到任何结果

1 个答案:

答案 0 :(得分:0)

以下查询可以为我们提供预期的输出:

db.collection.update(
    {
        $expr:{
            $lt:[
                {
                    $sum:["$total_paid",345]
                },
                "$overall_price"
            ]
        }
    },
    {
        $addToSet:{
            "paid":{
                "price":345,
                "Date": new Date()
            }
        },
        $inc:{
            "total_paid":345
        }
    }
)

注意:,这里345是我们需要添加的新价格