簡體   English   中英

MongoDB / Mongoose在您之前查找結果數

[英]MongoDB / Mongoose find number of results before you

假設我有一個名為“points”的貓鼬模型。 我用列名“points”訂購它。 通過將我的用戶標識傳遞給文檔列名稱userid來查找我的文檔。

我怎樣才能找到某些信息,例如“有xx人比你好?”

在這種情況下,有多少文件比你高?

需要多少次搜索才能“循環”直到您的文檔匹配為止?

查詢用戶的點,然后查詢點數高於該用戶的用戶數。

Points.findOne({userId: userId}, (err, doc) => {
    Points.count({points: {$gt: doc.points}}, (err, count) => {
        // do something with count...
    });
});

對於可伸縮性能,您需要單獨索引userIdpoints 在您的架構中:

userId: {type: ObjectId, index: true},
points: {type: Number, index: true},
...

這應該比任何map-reduce解決方案都快。

此問題已在另一個答案https://stackoverflow.com/a/22902445/6386175中得到解決

您可以將mapReduce用於小型數據集或更好,維護單獨的有序集合。

如果要使用Model.mapReduce ,Model對象也具有相同語法的Model.mapReduce方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM