我如何计算具有特定标准的猫鼬中的用户?

时间:2015-11-03 11:43:50

标签: mongodb mongoose

我有一个简单的排名计数,我必须这样才能给我的用户一个排名。

这样:

this.model('User').count({'myClub.scoreStamp': {'$gt':this.myClub.scoreStamp}}).exec(function(err,countNum){
            rankToReturn = countNum + 1;
             console.log('rankToReturn',rankToReturn);
             deferred.resolve( rankToReturn );
        });

其中scoreStamp是这样的分数:4.14,3.11等等。

我想在此查询中添加另一个字段,并检查以下内容: 统计所有具有相同X参数的用户,给我我的排名,我想知道最快的方法是什么:

我应该先查找然后计算吗?,就像这样:

 this.model('User').find({'myClub.club':12345678}).count({'myClub.scoreStamp': {'$gt':this.myClub.scoreStamp}}).exec(function(err,countNum){
                rankToReturn = countNum + 1;
                 console.log('rankToReturn',rankToReturn);
                 deferred.resolve( rankToReturn );
            });

或者可以这样做:

 this.model('User').count({'$and':{'myClub.scoreStamp': {'$gt' : this.myClub.scoreStamp} }}).exec(...);

查询这样的事情的正确和最快的方法是什么?

1 个答案:

答案 0 :(得分:2)

要计算两个术语都为真的文档,请将两个术语放在原始count调用的相同条件对象中,该对象提供隐式AND查询:

this.model('User').count({
    'myClub.club':12345678, 
    'myClub.scoreStamp': {'$gt':this.myClub.scoreStamp}
}).exec(function(err,countNum){
     rankToReturn = countNum + 1;
     console.log('rankToReturn',rankToReturn);
     deferred.resolve( rankToReturn );
});