Sorting MongoDB查询:是否可以按值列表排序?

Sorting MongoDB查询:是否可以按值列表排序?,sorting,mongodb,Sorting,Mongodb,我怀疑这在MongoDB中是否可行,但我想知道 查询的结果集可以按其中的值数组排序 结果集。这类似于MySQL的“按字段排序” 功能。此MySQL功能的一个简单示例: 下面是一个类似的例子,说明了我试图在 mongodb控制台: 我知道大多数人会建议:在客户机中进行排序 侧/应用程序代码。然而,这在我的情况下是行不通的。我是 对结果集分页(即skip()/limit()组合)。分类 应用程序代码需要选择整个集合 进入我的应用程序代码,未过滤,排序,然后申请 分页 在应用skip()/limit

我怀疑这在MongoDB中是否可行,但我想知道 查询的结果集可以按其中的值数组排序 结果集。这类似于MySQL的“按字段排序” 功能。此MySQL功能的一个简单示例:

下面是一个类似的例子,说明了我试图在 mongodb控制台:

我知道大多数人会建议:在客户机中进行排序 侧/应用程序代码。然而,这在我的情况下是行不通的。我是 对结果集分页(即skip()/limit()组合)。分类 应用程序代码需要选择整个集合 进入我的应用程序代码,未过滤,排序,然后申请 分页

在应用skip()/limit()之前,我需要对结果集进行排序

我认为这个功能非常实用。就我而言, 我正在尝试将功能与 MongoDB,同时保持Sphinx的匹配相关性排序。信息技术 工作原理如下:

  • Sphinx文档以MongoID作为字符串属性存储。这 直接对应于MongoDB文档
  • 执行用户文本搜索时,首先查询Sphinx。这个 然后使用Sphinx结果集中的MongoID查询MongoDB 收款(即$in运算符)
  • Sphinx结果集提供的相关性排序丢失
  • :(

  • 有什么切实可行的方法可以做到这一点吗?

    这目前是不可能的,也没有直接的解决办法。

    这目前是不可能的,也没有直接的解决办法。

    这是不可能的,但我想您可以从sphinx返回分页结果,从mongodb u加载适当的数据在操作符中使用
    $in,然后根据sphinx id的排序在客户端分页结果上进行排序。看起来这应该对您有用


    Mongodb的家伙们肯定在考虑“真正的”全文搜索支持(甚至还有计划中的功能),我想很快就会有了(可能在今年).

    这是不可能的,但我想您可以从sphinx返回分页结果,使用
    $in
    操作符从mongodb加载适当的数据,然后根据sphinx id的排序对客户端分页结果进行排序。似乎这对您很有用


    Mongodb的家伙们肯定在考虑“真正的”全文搜索支持(甚至还有计划中的功能),我想很快就会有了(可能在今年).

    你们并没有读过任何关于MongoDB的书和文档,对吗?@ahmet:我想你们并没有正确地读过这个问题……我的意思是这是不可能的,很多书中都有这样的说法。你们并没有读过任何关于MongoDB的书和文档,对吗?@ahmet:我想你们并没有正确地读过这个问题……我的意思是,这是不可能的,我想t在很多书中都有提到。这绝对是最好的解决方案。尽管Sphinx和MongoDB中的文档必须始终完全同步。但当Sphinx中存在文档但MongoDB CoolRection中没有文档时,我会遇到碎片结果。@TimboWhite:那么您对MongoDB和Sphinx的写入是异步的吗?我只是想知道,b因为我也在以您在问题中描述的方式规划mongodb和sphinx集成;)我还没有明确指出,但可能是某个cronjob归档了数据。我猜它是从mongo删除的,但不是sphinx。这绝对是最好的解决方案。尽管Sphinx和MongoDB中的文档必须始终完全同步。当一个文档存在于Sphinx中而不存在于MongoDB CoolRection中时,我遇到了碎片结果。@TimboWhite:那么您对MongoDB和Sphinx的写入是异步的?我只是想知道,因为我还计划以您在问题中描述的方式集成mongodb和sphinx;)我还没有明确指出,但可能是某个cronjob归档了数据。我猜它是从mongo删除的,但不是sphinx。