MongoDB排序前n个条目

时间:2014-08-18 13:39:00

标签: mongodb

我希望能够获取数据库中的十个最新条目,并按价格以最昂贵的第一个进行排序。 (日期和价格只是示例;这可能适用于任何两个可排序的字段。)如果我按价格排序,我将不会获得最近的十个条目,所以我必须按时间排序。但是,当我按时间排序时,结果按时间而不是价格排序。我可以制作一个按时间抓取文件并按价格订购的查询吗?或者我必须在查询返回后对条目进行排序?

1 个答案:

答案 0 :(得分:3)

如果您的文档的结构类似于:

 {_id: ObjectId("50a8240b927d5d8b5891743c"),
 price: 12,
 date: new Date("Oct 04, 2012")}

在控制台中,您可以运行以下查询:

db.prices.find({'date':ISODate("Oct 04, 2012")}).sort({'price':-1});

这将找到日期设置为 2014年10月4日的所有对象,并根据价格命令降序

如果您想要撤消排序顺序,可以将排序查询替换为:' price':1

修改

此外,如果您想拥有多个排序字段,例如以最高价格获得最新的排序字段,您可以使用以下查询:

db.prices.find().sort({'price':-1,'date':-1})

编辑2:

与更新的评论一样,查询应该获得前十个最新项目,并按照价格最贵的价格排序:

db.prices.find().sort({'date':-1}).limit(10).sort({'p':-1});

这是我现在想到的唯一方法。 获取按日期排序的前10个项目,之后应用另一个过滤器按价格对其进行排序。