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
    降序排序
  • $group
    按null排序,并生成
    文档中所有文档的数组
  • $unwind
    解构
    文档
    数组并传递
    includearyindex:“位置”
    这将在每个文档中创建一个有序的索引字段
    位置
    ,从零(0)开始
  • $skip
    $limit
    阶段

这可能是繁重的操作,在大数据中可能需要更多的执行时间


我不认为有什么好的方法可以做到这一点,但你仍然想这样做,然后尝试使用和阶段

  • $match
    您的条件
  • $sort
    降序排序
  • $group
    按null排序,并生成
    文档中所有文档的数组
  • $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 }
])