流星集合在过滤后查找排序

时间:2014-11-26 09:57:43

标签: mongodb collections meteor

我有一个地址集合,我想过滤集合以保留10个最近的地址,然后我希望能够将它们从更远的地方排序到最近的地址。

这可以在流星的单个查找请求中实现吗?

以下是我最近的10个地址:

Addresses.find({}, {sort:{distance:1}, limit:10});

但是他们是通过增加距离来排序的,显然如果我设置distance:-1他们将按降序排列,但我也只会得到10个最远的地址......

2 个答案:

答案 0 :(得分:1)

您需要聚合框架:

db.collection.aggregate(
  { $sort: { distance: 1 } },
  { $limit: 10 },
  { $sort: { distance: -1 } }
)

我希望查询不言自明。

如果您无法在aggregation中运行MeteorJS或本机mongo查询,那么您可能必须以编程方式撤消从数据库查询中获得的结果。

答案 1 :(得分:0)

如果您fetch搜索结果并reverse它应该有效。

Addresses.find({}, {sort:{distance:1}, limit:10}).fetch().reverse()

唯一的缺点是现在它不再是一个数组而不是光标