[英]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...
});
});
對於可伸縮性能,您需要單獨索引userId
和points
。 在您的架構中:
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.