这背后的原因是:
每当有人通过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()
游乐场