【问题标题】:MongoDB query results ordering (Numeric Range query)MongoDB查询结果排序(数值范围查询)
【发布时间】:2012-07-27 22:50:36
【问题描述】:

*这里是 Mongo 新手(在 Windows 上使用 Mongo C# 驱动程序)

您好,我正在评估 Mongo 是否应用了数字维度的组合。我有数百个数字字段并创建一个布尔查询(我广泛使用 Lucene、Solr 等,因此请原谅这些术语)。 Solr 中的结果按 relevance 排序,即多个维度上最接近的匹配,然后是下一个最接近的匹配,依此类推......

例如:

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 得到的结果似乎没有相关性排序。有什么方法可以按“相关性”对查询结果进行排序?

附言我知道总是可以从客户端中的游标中订购结果,但如果可能的话,我想在服务器端进行。

【问题讨论】:

    标签: mongodb mongodb-.net-driver


    【解决方案1】:

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

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

    【讨论】:

    • @Mikos:因为它超级慢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多