java - mongodb中的更新操作
问题描述
给定以下数据,并且我正在使用带有驱动程序 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() 但无法达到任何结果
解决方案
以下查询可以为我们提供预期的输出:
db.collection.update(
{
$expr:{
$lt:[
{
$sum:["$total_paid",345]
},
"$overall_price"
]
}
},
{
$addToSet:{
"paid":{
"price":345,
"Date": new Date()
}
},
$inc:{
"total_paid":345
}
}
)
注意:这里345是我们需要添加的新价格
推荐阅读
- xcode-server - Xcode Server 11 导出存档失败
- matlab - 错误信息:无法解析名称 obj.key
- javascript - 如何从一个框架设置 document.cookie 并在另一个框架中获取它
- ios - 为什么 iMessages 会更改我通过 UIActivityViewController 传递给它的 URL?
- r - 比例测试功率分析的自举
- r - R data.table:检测每组内的值模式
- python - 将 Python 列表拆分为具有最大内存大小的块
- python - 打开 .py 文件时 Tkinter Gui 未运行
- reactjs - 反应中具有动态 URL 的私有路由
- internet-explorer-11 - 到 OpenFire 的 inVerse(来自 Converse.js)插件在 IE11 上不起作用