如何用两个字段更新mongodb


db.auto_complete.find()
{ "_id" : ObjectId("6239a3c93a8e84c1b46d1bf4"), "category" : "음식", "keyword" : "삼겹살", "weight" : 0, "shard" : 5, "searchCount" : 3, "satisfactionCount" : 4, "force" : false }

但我想更新weight = (searchCount X 0.5 + satisfactionCount X 0.5)

我想要的结果=

{ "_id" : ObjectId("6239a3c93a8e84c1b46d1bf4"), "category" : "음식", "keyword" : "삼겹살", "weight" : 3, "shard" : 5, "searchCount" : 3, "satisfactionCount" : 4, "force" : false }

weight = ( 3(searchCount)X0.5 + 4(satisfactionCount)X0.5 ) =>3.5 (+round off) => 3

我试过使用$set,但没有解决这个问题如何使用mongo查询这个问题如果权重有小数点,我想把小数点四舍五入请帮帮我…

也许是这样的:

db.collection.update({},
[
{
$addFields: {
// weight = (searchCount X 0.5 + satisfactionCount X 0.5)
weight: {
$trunc: [
{
"$sum": [
{
"$multiply": [
"$searchCount",
0.5
]
},
{
"$multiply": [
"$satisfactionCount",
0.5
]
}
]
},
0
]
}
}
}
],{multi:true})

解释:

使用带聚合管道的更新方法(mongodb 4.2+(将权重值替换为根据提供的公式计算的四舍五入值。添加选项{multi:true}以应用于集合中的所有文档。

操场

最新更新