为了账号安全,请及时绑定邮箱和手机立即绑定

mongodb 中的更新操作

mongodb 中的更新操作

呼唤远方 2023-09-27 15:13:30
给出以下数据并且我正在使用带有驱动程序 3.10.1 的 java    "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低于overall_paid金额时,如何将新添加的价格添加到totalpaid中。注意到我已经尝试过 max() 和 inc() 但无法达到任何结果
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

以下查询可以获得预期的输出:


db.collection.update(

    {

        $expr:{

            $lt:[

                {

                    $sum:["$total_paid",345]

                },

                "$overall_price"

            ]

        }

    },

    {

        $addToSet:{

            "paid":{

                "price":345,

                "Date": new Date()

            }

        },

        $inc:{

            "total_paid":345

        }

    }

)

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


查看完整回答
反对 回复 2023-09-27
  • 1 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信