给定以下数据,并且我正在将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量时,才如何将新添加的价格添加到totalpay中。注意到我已经尝试过max()和inc(),但无法达到任何结果

最佳答案

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

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


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

关于java - 更新mongodb中的操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58259414/

10-09 18:51