MongoDB: метод db.collection.aggregate ()
db.collection.aggregate
Метод db.collection.aggregate () используется для вычисления агрегированных значений для данных в коллекции.
Синтаксис:
db.collection.aggregate (конвейер, опции)
Параметры:
название | Описание | Необходимые / Необязательный | Тип |
---|---|---|---|
трубопровод | Последовательность операций или этапов агрегирования данных. Метод по-прежнему может принимать этапы конвейера как отдельные аргументы, а не как элементы в массиве; однако, если вы не укажете конвейер как массив, вы не сможете указать параметр options. | необходимые | массив |
опции | Дополнительные параметры, которые aggregate () передает в команду aggregate. | Необязательный | документ |
Операторы конвейера агрегации следующие:
Этапы агрегации трубопроводов
название | Описание |
---|---|
$ проект | Функция $ project в MongoDB передает документы только с указанными полями на следующую стадию в конвейере. Это могут быть существующие поля из входных документов или вновь вычисленные поля. |
$ матч | Оператор MongoDB $ match фильтрует документы, чтобы передать только те документы, которые соответствуют указанным условиям, на следующую стадию конвейера. |
$ красноломкий | Оператор $ redact может измениться и дает новую форму каждого документа в потоке, ограничивая содержимое каждого документа на основе информации, хранящейся в самих документах. |
$ предел | Передает первые n документов без изменений в конвейер, где n - указанное ограничение. Для каждого входного документа выводится либо один документ (для первых n документов), либо ноль документов (после первых n документов). |
$ пропустить | Пропускает первые n документов, где n - указанный номер пропуска, и передает оставшиеся документы без изменений в конвейер. Для каждого входного документа выводится либо ноль документов (для первых n документов), либо один документ (если после первых n документов). |
$ размотки | Оператор этапов раскрутки MongoDB $ используется для деконструкции поля массива из входных документов для вывода документа для каждого элемента. Каждый выходной документ является входным документом, в котором значение поля массива заменяется элементом. |
$ группа | Оператор групповых этапов MongoDB $ группирует документы по некоторому указанному выражению и группирует документ для каждой отдельной группировки. Поле _id в выходных документах содержит отдельную группу по ключу. Выходные документы также могут содержать вычисляемые поля, которые содержат значения некоторых выражений аккумулятора, сгруппированных по полю _id в $ group. Этот оператор не заказывает свои выходные документы. |
$ сортировать | Переупорядочивает поток документов по указанному ключу сортировки. Меняется только порядок; документы остаются без изменений. Для каждого входного документа выводится один документ. |
$ geoNear | Возвращает упорядоченный поток документов на основе близости к геопространственной точке. Включает в себя функциональность $ match, $ sort и $ limit для геопространственных данных. Выходные документы включают в себя дополнительное поле расстояния и могут включать поле идентификатора местоположения. |
$ из | MongoDB $ out записывает результирующий документ конвейера агрегации в указанную коллекцию. Оператор $ out должен быть последним этапом в конвейере. Оператор $ out позволяет структуре агрегации возвращать наборы результатов любого размера. |
Документ параметров может содержать следующие поля и значения:
поле | Тип | Описание |
---|---|---|
объяснять | логический | Необязательный. Определяет, чтобы вернуть информацию об обработке конвейера. |
allowDiskUse | логический | Необязательный. Позволяет записывать во временные файлы. Если задано значение true, операции агрегирования могут записывать данные в подкаталог _tmp в каталоге dbPath. |
курсор | документ | Необязательный. Определяет начальный размер пакета для курсора. Значением поля курсора является документ с полем batchSize. |
Пример: MongoDB: метод db.collection.aggregate ()
Следующий запрос MongoDB начинает сопоставление в коллекции ресторанов для документов с районом, равным «Бруклин», и группирует соответствующие документы по полю кухни и вычисляет количество раз, когда каждая группа появляется.
db.restaurants.aggregate(
[
{ $match: { "borough": "Brooklyn"} },
{ $group: { "_id": "$cuisine", "No_of_Times": { $sum: 1 } } }
]
);
Образец документа в коллекции ресторанов:
{
"address": {
"building": "1007",
"coord": [ -73.856077, 40.848447 ],
"street": "Morris Park Ave",
"zipcode": "10462"
},
"borough": "Bronx",
"cuisine": "Bakery",
"grades": [
{ "date": { "$date": 1393804800000 }, "grade": "A", "score": 2 },
{ "date": { "$date": 1378857600000 }, "grade": "A", "score": 6 },
{ "date": { "$date": 1358985600000 }, "grade": "A", "score": 10 },
{ "date": { "$date": 1322006400000 }, "grade": "A", "score": 9 },
{ "date": { "$date": 1299715200000 }, "grade": "B", "score": 14 }
],
"name": "Morris Park Bake Shop",
"restaurant_id": "30075445"
}
.....
Выход:
{"_id": "Фрукты / Овощи", "No_of_Times": 2} {"_id": "Chilean", "No_of_Times": 1} {"_id": "португальский", "No_of_Times": 1} {"_id": "Деликатесы", "No_of_Times": 46} {"_id": "Восточноевропейский", "No_of_Times": 27} {"_id": "Скандинавский", "No_of_Times": 1} {"_id": "Creole / Cajun", "No_of_Times": 1} {"_id": "Афганец", "No_of_Times": 1} {"_id": "Китайский / кубинский", "No_of_Times": 5} {"_id": "Китайский / Японский", "No_of_Times": 13} {"_id": "Орехи / Кондитерская", "No_of_Times": 1} {"_id": "Эфиопский", "No_of_Times": 4} {"_id": "Creole", "No_of_Times": 17} {"_id": "German", "No_of_Times": 6} {"_id": "Перуанский", "No_of_Times": 9} {"_id": "Стейк", "No_of_Times": 7} {"_id": "Czech", "No_of_Times": 2} {"_id": "Other", "No_of_Times": 272} {"_id": "Нет в списке / не применимо", "No_of_Times": 6} {"_id": "Пакистан", "No_of_Times": 10}
Получить данные о ресторанах здесь
Предыдущая: Введение в методы оболочки Mongodb
Далее: метод db.collection.count ()
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code