hor*_*ace 5 performance ranking mongodb
我使用 MongoDB,拥有大约 100000 个条目的集合。
这些条目包含如下数据:
{"page": "page1", "user_count": 1400}
{"page": "page2", "user_count": 1100}
{"page": "page3", "user_count": 900}
...
Run Code Online (Sandbox Code Playgroud)
我想根据 user_count 输出条目的排名,例如:
#1 - page1
#2 - page2
#3 - page3
...
Run Code Online (Sandbox Code Playgroud)
...到目前为止,一切都很好。如果我只输出一个排序列表,我可以简单地使用循环计数器。
但我还必须支持各种搜索查询。例如,我得到 20 个结果,并想显示结果的排名。喜欢:
#432 - page1232
#32 - page223
#345 - page332
...
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?我真的不想将排名存储在集合中,因为集合不断变化。我尝试用我即时构建的查找字典来解决这个问题,但速度非常慢。MongoDB 是否有针对此类情况的特殊功能可以提供帮助?
小智 2
没有一个命令可以用来执行此操作,但可以使用 count 来执行此操作:
var doc = db.pages.findOne(); // Or however you get your document
var n = db.pages.find({user_count : {$gt : doc.user_count}}).count(); // This is the number of documents with a higher user_count
var ranking = n+1; // Your doc is next in a ranking
Run Code Online (Sandbox Code Playgroud)
另一个问题是您是否应该这样做。考虑以下:
鉴于此,与根据应用程序的 CRUD 配置文件将排名存储在集合中相比,您可能会对性能产生更大的影响 - 由您决定什么是最佳选项。
| 归档时间: |
|
| 查看次数: |
5377 次 |
| 最近记录: |