MongoDB查询:可以按值列表排序吗?

时间:2011-06-28 18:39:23

标签: sorting mongodb

我怀疑MongoDB目前是否可行,但我想知道是否可以 查询的结果集可以按其中的值数组进行排序 结果集。这类似于MySQL的“ORDER BY FIELD” 功能。这个MySQL功能的一个简单示例: http://pastebin.com/qtL1vKcM

这是我正在尝试完成的类似示例 mongodb console:http://pastebin.com/LuKqA6b1

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

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

我认为这个功能非常实用。就我而言, 我正在尝试将Sphinx text search功能集成到 MongoDB,同时通过匹配相关性维护Sphinx的排序。它 是这样的:

  1. Sphinx文档与MongoID一起存储为字符串属性。这个 直接对应MongoDB文档。
  2. 执行用户文本搜索时,首先查询Sphinx。该 然后使用来自Sphinx结果集的MongoID来查询MongoDB 集合(即$ in运算符)。
  3. Sphinx结果集提供的相关性排序将丢失。
  4. :(
  5. 有没有切实可行的方法来实现这个目标?

2 个答案:

答案 0 :(得分:1)

这是不可能的,但我猜你可以从sphinx返回分页结果,使用$in运算符从mongodb加载适当的数据,然后根据sphinx id的排序对客户端分页结果进行排序。似乎这应该适合你。

Mongodb家伙肯定会考虑“真正的”全文搜索支持(甚至有计划的jira功能),我想它很快就会出现(可能在今年)。

答案 1 :(得分:0)

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