Node.js 猫鼬获取数据的位置
我正在使用此代码获取我的用户排行榜Node.js 猫鼬获取数据的位置,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在使用此代码获取我的用户排行榜 var data=wait db.models.user .find({points:{$ne:0}}) .collation({locale:“en_US”,numericOrdering:true}) .sort(“-points”) .限额(10) .跳过(第10-10页) 但我找不到如何让用户在所有排行榜中占据一席之地。我怎样才能得到它呢?我认为没有什么好的方法或方法可以做到这一点,但你仍然想做到这一点,然后尝试使用 $match您的条件 $sor
var data=wait db.models.user
.find({points:{$ne:0}})
.collation({locale:“en_US”,numericOrdering:true})
.sort(“-points”)
.限额(10)
.跳过(第10-10页)
但我找不到如何让用户在所有排行榜中占据一席之地。我怎样才能得到它呢?我认为没有什么好的方法或方法可以做到这一点,但你仍然想做到这一点,然后尝试使用
您的条件$match
按$sort
降序排序点
按null排序,并生成$group
文档中所有文档的数组
解构$unwind
数组并传递文档
这将在每个文档中创建一个有序的索引字段includearyindex:“位置”
,从零(0)开始位置
和$skip
阶段$limit
我不认为有什么好的方法可以做到这一点,但你仍然想这样做,然后尝试使用和阶段
您的条件$match
按$sort
降序排序点
按null排序,并生成$group
文档中所有文档的数组
解构$unwind
数组并传递文档
这将在每个文档中创建一个有序的索引字段includearyindex:“位置”
,从零(0)开始位置
和$skip
阶段$limit
它已经按点按降序排序,您可以在客户端轻松地进行排序,如果您不这样做,则需要转到聚合查询。@turivishal它有大约10k个文档。我应该得到所有集合中的排序位置。但如果我不使用limit,则需要20秒以上的时间才能获取所有数据,难道没有方法吗?它已经按点降序排序,您可以在客户端轻松地进行排序,如果不使用limit,则需要移动到聚合查询。@turivishal它有大约10k个文档。我应该得到所有集合中的排序位置。但如果我不使用limit,那么获取所有数据需要20秒以上的时间,难道没有一种方法可以做到这一点吗?
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 }
])