我有一个地址集合,我想过滤集合以保留10个最近的地址,然后我希望能够将它们从更远的地方排序到最近的地址。
这可以在流星的单个查找请求中实现吗?
以下是我最近的10个地址:
Addresses.find({}, {sort:{distance:1}, limit:10})
;
但是他们是通过增加距离来排序的,显然如果我设置distance:-1
他们将按降序排列,但我也只会得到10个最远的地址......
答案 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()
唯一的缺点是现在它不再是一个数组而不是光标