Я хотел бы знать, есть ли в любом случае я могу «группировать» мои результаты с помощью MongoDB / Php.
Это код, который я использую для отображения строк:
$count = $col->find(array('order_id' => array('$gt' => '0')))->count();
Мне нужно сгруппировать их по order_id
.
По-видимому, мы не можем сделать count()
для group()
как find()
РАБОТЫ: $countfind = $col->find()->count();
НЕ $countgroup = $col->group($keys)->count();
: $countgroup = $col->group($keys)->count();
Мне нужно считать эту группу, пожалуйста.
Спасибо за вашу помощь.
Иногда вы можете захотеть получить массив различных значений в коллекции. Вы можете выполнить это с помощью метода distinct ():
$ages = $dm->createQueryBuilder('User') ->distinct('age') ->getQuery() ->execute();
На их веб-сайте есть подробная документация по команде группы.
Здесь есть несколько примеров использования группы с использованием libarary PHP .
Если ваш набор данных действительно большой, вам, возможно, придется посмотреть на работу с картами – сводится к «предварительной группировке» этих данных.
После того, как этот вопрос был задан и ответил, 10gen выпустил версию Mongodb версии 2.2 с базой агрегации. Таким образом, новый лучший способ сделать Group By – с оператором $ group . В PHP используйте MongoCollection :: aggregate .
FYI, 10gen также имеет удобный SQL to Mongo Aggregation chart chart, который стоит закладок. В нем есть примеры всех распространенных SQL-запросов, которые используют агрегацию SQL и как их перевести в Mongo.