2012-07-27 109 views
0

*蒙戈新手在这里(蒙戈使用C#驱动程序在Windows上)MongoDB的查询结果排序(数字范围查询)

嗨,我评估蒙戈用于应用数字维度的组合。我有数百个数字字段,并创建一个布尔查询(我广泛使用Lucene,Solr等,因此赦免术语)。在Solr的结果由相关沿多个维度即最接近的匹配命令,随后是下一个最接近的,等等....

例如:使用

Doc1: 
- NumField 1 : 9.9 
- NumField 2: 8.2 

Doc2: 
- NumField 1 : 5.9 
- NumField 2: 8.9 


**Query** 
- NumField 1: Between 7 & 10 
- NumField 2: Between 8 & 10 

I would want Doc1 to show up before Doc2. 

查询蒙戈类似构造使我得到的结果没有看起来相关的顺序。有什么办法可以通过“相关性”来排序查询结果吗?

p.s.我知道总是可以从我的客户端中的光标处得到结果,但如果可能的话,我想尽可能在​​服务器端完成。

回答

1

Mongo没有任何基于分数的排序,它会按照索引顺序返回文档(假设您的查询命中索引)。

你最好的选择可能是在客户端排序。如果你确实想在Mongo中使用它,你可以使用map/reduce功能在文档上打分,然后查询输出集合并按分数排序。这可能不是一个好主意。

+0

+1,分享为什么地图/减少评分是一个坏主意? – Mikos 2012-07-27 23:09:16

+2

@Mikos:因为它超级慢。 – 2012-07-27 23:30:58