PHP MongoDB упорядочен отдельно с пропуском и ограничением

Есть ли способ заказать отдельный запрос в MongoDB (PHP)? Было бы еще лучше, если бы я мог применить к нему skip() и limit(). Но я пока не нашел способов сделать это.

В SQL я бы сделал что-то подобное следующим образом:

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

person Johan Haest    schedule 18.07.2012    source источник
comment
jira.mongodb.org/browse/SERVER-2130 Я не думаю, что это возможно..   -  person Johan Haest    schedule 18.07.2012


Ответы (1)


Вы можете реализовать такой запрос, используя новую Aggregation Framework в MongoDB 2.2:

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

Существуют некоторые ограничения, о которых следует помнить, в частности:

  • Результаты возвращаются в режиме реального времени, поэтому они не могут превышать максимальный размер документа (16 МБ для MongoDB 2.2).
  • Если какая-либо отдельная операция агрегирования потребляет более 10 процентов оперативной памяти системы, операция приведет к ошибке.
person Stennie    schedule 17.09.2012