[英]Mongoose get position of a data
我正在使用此代码获取我的用户排行榜
var data = await db.models.user
.find({ points: { $ne: 0 } })
.collation({locale: "en_US", numericOrdering: true})
.sort('-points')
.limit(10)
.skip(page*10-10)
但我找不到如何在所有排行榜中获得用户 position。 我怎么才能得到它?
我认为没有任何好的方法或方法可以做到这一点,但你仍然想这样做然后尝试使用aggregate()和$unwind阶段,
$match
你的条件$sort
按points
降序排列$group
by null 并制作文档中所有docs
的数组$unwind
解构docs
数组并传递includeArrayIndex: 'position'
这将在每个文档中创建一个有序索引字段position
,从零(0)开始,$skip
和$limit
阶段var data = await db.models.user.aggregate([
{ $match: { points: { $ne: 0 } } },
{ $sort: { points: -1 } },
{
$group: {
_id: null,
docs: { $push: "$$ROOT" }
}
},
{
$unwind: {
path: "$docs",
includeArrayIndex: "position"
}
},
{ $skip: 10 },
{ $limit: page*10-10 }
])
这可能是繁重的操作,在大数据中可能需要更多的执行时间!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.