javascript - 猫鼬 - 聚合数据
问题描述
aggregate
我正在尝试通过以下代码弄清楚如何与猫鼬一起使用:
const Model = db.model(which, schema)
var regex = new RegExp(name, "g")
const query =
Model
.find({
name: regex
})
.where("user_id").equals(req.session.user.id)
if (except)
{
if (Array.isArray(except))
{
query
.where("_id").nin(except)
}
else
{
query
.where("_id").neq(except)
}
}
return await
query
.skip(start)
.limit(finish)
.lean()
.exec()
我想要做的是也得到总数(没有限制)。当然我可以删除skip
andlimit
并使用count
,然后再次运行它,但我认为 aggregate 适合这种情况?
解决方案
您可以尝试以下聚合
db.collection.aggregate([
{ "$facet": {
"data": [
{ "$match": {
"name": { "$regex": name },
"user_id": mongoose.Types.ObjectId(req.session.user.id),
"_id": { "$nin": except }
}},
{ "$skip": start },
{ "$limit": finish }
],
"count": [
{ "$match": {
"name": { "$regex": name },
"user_id": mongoose.Types.ObjectId(req.session.user.id),
"_id": { "$nin": except }
}},
{ "$count": "count" }
]
}}
])
推荐阅读
- angular - 检索已发布的消息而不在其他地方路由/在 Angular 中发送消息后
- python - python sys.argv in classes name.py [list of integers 2, 4,..], integer
- android - java.lang.RuntimeException:尝试在活动之间切换时无法实例化活动错误
- spring - Spring批处理动态阅读器
- laravel - 检查started_at是否大于5分钟
- php - 在 laravel 中查看多对多关系
- python - 如何在python中实现单遍聚类算法
- python - 如何获取字典中特定键最大的字典?
- laravel - 您的要求无法解决为一组可安装的软件包。在 laravel 8
- objective-c - iOS 14 崩溃 UITextField 与 textColor = [ UIColor colorWithCIColor: ]