Mongodb 流星-出版一本收藏集';s基于另一个集合的文档';s数据

Mongodb 流星-出版一本收藏集';s基于另一个集合的文档';s数据,mongodb,meteor,Mongodb,Meteor,我正在开发一个应用程序(使用Meteor),用户可以在其中接收任务并获得积分。该应用程序有一个排行榜,显示当前用户的积分和排名,以及排行榜中他以下和以上的另外两个用户。下面是一个例子: 排行榜 排名…用户………..分 3………用户A…………100 4………用户B…………80 5………用户C…………60(当前用户) 6………用户D…………40 7………用户E………15 假设我想检索本月排行榜,以下是步骤: -获取Meteor.users中的user C文档collection -获取用户C在本月完

我正在开发一个应用程序(使用Meteor),用户可以在其中接收任务并获得积分。该应用程序有一个排行榜,显示当前用户的积分和排名,以及排行榜中他以下和以上的另外两个用户。下面是一个例子:

排行榜
排名…用户………..分
3………用户A…………100
4………用户B…………80
5………用户C…………60(当前用户)
6………用户D…………40
7………用户E………15

假设我想检索本月排行榜,以下是步骤:
-获取
Meteor.users中的user C文档
collection
-获取用户C在本月完成的任务
-将用户C的任务积分相加以获得其积分
-基于用户C的点数,在他下面(点数较少)和他上面(点数较多)=>如何操作?
-将5个用户返回到客户端

我被困在第四步,期待你的建议。谢谢

  • 在Meteor.users集合中获取用户C文档:

    let userC = Meteor.users.findOne(username : 'userC');
    
  • 获取用户C本月已完成的任务:

     let tasksUserC = Tasks.find({userId : userC._id}).fetch()
    
(假设您的任务有一个userId字段-如果是uniques username,则可以与username相同)

  • 将用户C的任务点数相加以获得其点数

     let userCPoints = 0;
        for (let i = 0; i < tasksUserC.length; i++) {
            userCPoints += tasksUserC[i].point;
         }
    
  • 将5个用户返回到客户端:

    return fiveNeededUsers;
    

没有尝试过,但如果您适应数据库中的字段,应该会这样做。

检查以下组合的Mongo运算符:
$or
$gt
$lt
,这将使您能够创建所描述的查询
return fiveNeededUsers;