2015-11-03 55 views
1

我有一個簡單的排名計數,我必須爲了給我的用戶排名。我如何計算貓鼬中有特定標準的用戶?

是這樣的:

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(...); 

什噸是查詢這樣的事情的正確和最快的方式?

回答

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); 
});