полимеризация MongoDB
MongoDB полимеризуется (складочном) в основном для обработки данных (например, статистические средние, суммы и т.д.), и возвращает результат расчетных данных. Несколько подобный подсчет SQL утверждение (*).
Совокупный метод ()
Способ полимеризации MongoDB использует агрегат ().
грамматика
Метод Базовый синтаксис агрегатный () выглядит следующим образом:
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
примеров
Сбор данных выглядит следующим образом:
{ _id: ObjectId(7df78ad8902c) title: 'MongoDB Overview', description: 'MongoDB is no sql database', by_user: 'w3cschool.cc', url: 'http://www.w3cschool.cc', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }, { _id: ObjectId(7df78ad8902d) title: 'NoSQL Overview', description: 'No sql database is very fast', by_user: 'w3cschool.cc', url: 'http://www.w3cschool.cc', tags: ['mongodb', 'database', 'NoSQL'], likes: 10 }, { _id: ObjectId(7df78ad8902e) title: 'Neo4j Overview', description: 'Neo4j is no sql database', by_user: 'Neo4j', url: 'http://www.neo4j.com', tags: ['neo4j', 'database', 'NoSQL'], likes: 750 },
Теперь мы установили выше рассчитывается для каждого из числа статей, написанных авторами, с использованием совокупности () вычисляется следующим образом:
> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}]) { "result" : [ { "_id" : "w3cschool.cc", "num_tutorial" : 2 }, { "_id" : "Neo4j", "num_tutorial" : 1 } ], "ok" : 1 } >
Подобные примеры выше SQL заявление: выберите by_user, граф (*) от Mycol группы по by_user
В приведенном выше примере, мы by_user поле по полю, чтобы сгруппировать данные и вычисляет сумму того же значения by_user поля.
В следующей таблице приведены некоторые выражения агрегации:
выражение | описание | примеров |
---|---|---|
$ Сумма | Вычислить сумму. | db.mycol.aggregate ([{$ группа: {_id: "$ by_user", num_tutorial: {$ сумма: "$ любит"}}}]) |
$ Avg | Расчет среднего | db.mycol.aggregate ([{$ группа: {_id: "$ by_user", num_tutorial: {$ СРЕДНЕМ: "$ любит"}}}]) |
$ Мин | Возвращает коллекцию всех документов соответствуют стоит минимум. | db.mycol.aggregate ([{$ группа: {_id: "$ by_user", num_tutorial: {$ мин: "$ любит"}}}]) |
$ Макс | Возвращает коллекцию всех документов, соответствующих максимальному стоимости. | db.mycol.aggregate ([{$ группа: {_id: "$ by_user", num_tutorial: {$ макс: "$ любит"}}}]) |
$ Нажмите | В итоговом документе, чтобы вставить значение в массив. | db.mycol.aggregate ([{$ группа: {_id: "$ by_user", URL: {$ толчок: "$ URL"}}}]) |
$ AddToSet | В итоговом документе, чтобы вставить значение в массив, но не создает копию. | db.mycol.aggregate ([{$ группа: {_id: "$ by_user", URL: {$ addToSet: "$ URL"}}}]) |
$ First | Будучи первые данные документа в соответствии с документами своего рода ресурсов. | db.mycol.aggregate ([{$ группа: {_id: "$ by_user", first_url: {$ первый: "$ URL"}}}]) |
$ Последняя | Получает последние данные документа в соответствии с документами своего рода ресурсов | db.mycol.aggregate ([{$ группа: {_id: "$ by_user", last_url: {$ Последнее: "$ URL"}}}]) |
Концепция трубопровода
Трубы в Unix и Linux в целом используется для вывода текущей команды в качестве параметра к следующей команде.
MongoDB MongoDB документ полимерная труба в трубе после того, обрабатываемого результата к следующей обработке трубопровода. Эксплуатация трубопровода может быть повторен.
Выражение: обработка входных и выходных документов. Выражения являются лицами без гражданства, могут быть использованы только для расчета текущего трубопровода совокупных документов, вы не можете иметь дело с другими документами.
Здесь мы вводим структуру агрегации обычно используется в нескольких операциях:
- $ Проект: Изменение структуры исходного документа. Может использоваться для переименования, добавлять или удалять поля, он также может быть использован для создания вложенных вычислений и документации.
- $ Match: используется для фильтрации данных, только вывод квалифицированных документов. $ Match с помощью стандартных операторов запросов MongoDB.
- $ Limit: ограничить количество документов трубопроводов полимеризации MongoDB возвратили.
- $ Пропустить: Пропустить указанное количество документов в трубопроводе полимеризации, и возвращает оставшуюся часть документа.
- $ Разматывает: документ разделен на массиве поля типа в несколько, каждый массив, содержащий значение.
- $ Группа: сбор документов, группировка может быть использована для статистических результатов.
- $ Сортировка: выходной входной документ после размещения заказа.
- $ GeoNear: Заказал вывод документа, близкий к географическому положению.
Примеры оператора трубопровода
1, примеры проектов $
db.article.aggregate( { $project : { title : 1 , author : 1 , }} );
В этом случае результаты будут только там _id, tilte и автор трех полей, _id по умолчанию поле должно быть включено, если заказ не содержит _ID, если это может быть:
db.article.aggregate( { $project : { _id : 0 , title : 1 , author : 1 }});
2. $ примеры совпадения
db.articles.aggregate( [ { $match : { score : { $gt : 70, $lte : 90 } } }, { $group: { _id: null, count: { $sum: 1 } } } ] );
$ Match используется для получения балла больше, чем 70 меньше или равно 90 записей, то совпадающие записи к следующему этапу оператора трубопровода $ группы для обработки.
3. $ пропустить экземпляр
db.article.aggregate( { $skip : 5 });
После того, как оператор обработки трубопровода $ скипового, первые пять документов "фильтруются" из.