4

无论如何要在 MongoDB (PHP) 中订购不同的查询吗?如果我可以对其应用 skip() 和 limit() 会更好。但我还没有找到任何方法来做到这一点。

在 SQL 中,我会按以下方式执行以下操作:

SELECT distinct(fieldname) 
FROM tablename
ORDER BY fieldname
LIMIT 10
OFFSET 100
4

1 回答 1

4

您可以使用MongoDB 2.2 中的新聚合框架来实现这种查询:

db.collname.aggregate(
    { $group : { _id : "$fieldname" }},
    { $sort : { _id: 1 }},
    { $skip : 100 },
    { $limit : 10 }
);

有一些限制需要注意,特别是:

  • 结果是内联返回的,因此不能超过最大文档大小(MongoDB 2.2 为 16Mb)
  • 如果任何单个聚合操作消耗超过 10% 的系统 RAM,则该操作将产生错误
于 2012-09-17T12:44:57.790 回答