根据数组长度增加文档字段



这背后的原因是:

每当有人通过api获取博客文章时,他的IP地址就会通过$addToSet添加到ips中。

在后台,我有一个cronjob,它需要对数组进行计数,增加视图计数器并清理数组。

return Blog.updateMany({}, {
$inc: {
views: {
$size: "$ips"
}
}
}).exec()

我尝试更新字段。字段views是数字,而字段ips是数组。

我想做的是根据数组增加views,然后我想清除数组。

但这失败了。有人能解决问题吗?

您可以尝试使用聚合管道进行更新

  • $size以数字形式获取数组的总大小,$add将新旧值相加,并清理ips数组
return Blog.updateMany({}, 
[{
$set: {
views: { $add: ["$views", { $size: "$ips" }] },
ips: []
}
}]
).exec()

游乐场

最新更新