MongoDB查询结果排序(数字范围查询)

时间:2012-07-27 22:50:36

标签: mongodb mongodb-.net-driver

* Mongo新手在这里(在Windows上使用Mongo C#Driver)

嗨,我正在评估Mongo应用数字维的组合。我有数百个数字字段并创建一个布尔查询(我与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.

使用类似的构造查询Mongo得到的结果没有看似相关的排序。有没有办法按“相关性”订购查询结果?

P.S。我知道总是可以在我的客户端命令光标的结果,但如果可能的话,我想在服务器端完成。

1 个答案:

答案 0 :(得分:1)

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

您最好的选择可能是在客户端上排序。如果您确实想要在Mongo中执行此操作,则可以使用map / reduce功能在文档上添加分数,然后查询输出集合并按分数排序。但这可能不是一个好主意。