Intereting Posts
Показывать количество пользователей в реальном времени на веб-сайте с помощью Google Analytics Drupal Условный PHP, если администратор или пользователь имеют определенную роль cURL на показе Apache .. "Доступ запрещен! Ошибка 403 " Не может включать пакет груши, который определенно существует (и установлен) Как использовать nl2br () для обработки строки с помощью '\ r \ n'? Неустранимая ошибка: вызов функции-члена fetchALL () для не-объекта – использование PDO в базе данных Microsoft Access Есть ли у кого-нибудь фрагмент кода PHP для захвата первого «предложения» в строке? как вставить в mysql с помощью подготовленного заявления с php mail () не работает на новом сервере Как отправить уведомление на Android с php? Как преобразовать ISO8601 в формат даты в php Почему мой запрос с именованными параметрами возвращает пустой результат? Фундаментальное непонимание модели в «Красноречии» (за пределами Laravel) Сообщение о сообщении формы ActiveRecord where_in () с массивом

mongodb php получает уникальные значения полей

Я пытаюсь получить список уникальных значений из поля type из моей коллекции mongodb. Примеры документов ниже:

{ "_id" : ..., "type" : "report", "tasks" : ... } { "_id" : ..., "type" : "research", "tasks" : ... } { "_id" : ..., "type" : "memo", "tasks" : ... } { "_id" : ..., "type" : "memo", "tasks" : ... } { "_id" : ..., "type" : "report", "tasks" : ... } { "_id" : ..., "type" : "report", "tasks" : ... } 

Я ищу, упорядоченный по частоте, уникальные типы, которые находятся в поле типа документов, поэтому:

 ["report", "memo", "research"] 

Каков наилучший способ сделать это? Надеюсь, я смогу сделать это, запросив манго и не загрузив всю коллекцию …

Related of "mongodb php получает уникальные значения полей"

В стандартной СУБД SQL это будет сделано со следующим запросом:

 SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct; 

на mongodb это будет сделано с помощью групповой функции, хотя это немного сложнее:

 db.collection.group( {key: { "type":true}, reduce: function(obj,prev) { prev.count += 1; }, initial: { count: 0 } }); 

Здесь я прошу db вернуть значения для ключа «type» (отсюда «true»), и для каждого значения данная функция сокращения будет использоваться для агрегирования найденных записей. Здесь я просто обновляю счет того, сколько раз появляется каждая запись. Если вы запустите этот запрос, вы получите что-то вроде этого:

 [ { "type" : "report", "count" : 5 }, { "type" : "memo", "count" : 15 } { "type" : "research", "count" : 3 } ] 

Вы заметите, что это не заказано; даже mongodb docs говорят, что самый простой способ заказать это – сделать это на стороне клиента.

Соответствующая документация находится здесь .

Вы можете использовать различные: http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Distinct

В php-документе есть пример: http://php.net/manual/en/mongodb.command.php

 $types = $db->command(array("distinct" => "yourCollection", "key" => "type")); foreach ($types['values'] as $type) { echo "$type\n"; } 

Я не знаю, упорядочены ли результаты по частоте.