PHP MongoDB使用skip和limit命令distinct

时间:2012-07-18 11:40:49

标签: mongodb mongodb-php nosql

无论如何在MongoDB(PHP)中订购一个独特的查询?如果我可以对它应用skip()和limit(),那就更好了。但我还没有找到任何办法。

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

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

1 个答案:

答案 0 :(得分:4)

您可以使用MongoDB 2.2中的新Aggregation Framework实现此类查询:

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

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

  • 结果以内联方式返回,因此不能超过最大文档大小(MongoDB 2.2为16Mb)
  • 如果任何单个聚合操作占用系统RAM的10%以上,则操作将产生错误