[英]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.