MongoDB: метод db.collection.group ()
db.collection.group
Метод db.collection.group () используется для группировки документов в коллекции по указанным ключам и выполняет простые функции агрегирования, такие как подсчет и суммирование.
Синтаксис:
db.collection.group ({ключ, уменьшить, начальный [, ключ] [, cond] [, завершить]})
Параметры:
Db.collection.group () принимает один документ, который содержит следующее:
название | Описание | Необходимые / Необязательный | Тип |
---|---|---|---|
ключ | Поле или поля в группе. Возвращает ключевой объект для использования в качестве ключа группировки. | необходимые | документ |
уменьшить | Функция агрегации, которая работает с документами во время операции группировки. Эти функции могут возвращать сумму или счет. Функция принимает два аргумента: текущий документ и документ результата агрегации для этой группы. | необходимые | функция |
начальная | Инициализирует документ результата агрегации. | необходимые | начальная |
KEYF | Альтернатива ключевому полю. Определяет функцию, которая создает ключевой объект для использования в качестве ключа группировки. Используйте ключ вместо ключа для группировки по вычисляемым полям, а не по существующим полям документа. | Необязательный | функция |
конд | Критерии выбора, позволяющие определить, какие документы в коллекции нужно обработать. Если вы опустите поле cond, db.collection.group () обработает все документы в коллекции для групповой операции. | необходимые | документ |
завершать | Функция, которая запускает каждый элемент в наборе результатов до того, как db.collection.group () возвращает окончательное значение. Эта функция может либо изменить результирующий документ, либо заменить итоговый документ в целом. | Необязательный | функция |
Предположим, что образец коллекции empdetails:
{
"_id" : ObjectId("56750affdaac17575df77f3e"),
"emp_code" : "E005",
"emp_name" : "Alan Hogg",
"date_of_join" : "15/09/2013",
"salary" : 19000,
"gross" : {
"basic" : 12000,
"da" : 5000,
"hra" : 2000
},
"deduction" : {
"pf" : 2000,
"pt" : 300,
"it" : 200
}
}
{
"_id" : ObjectId("567532f0f61afaaed2aae48c"),
"emp_code" : "E006",
"emp_name" : "Karlos Mint",
"date_of_join" : "23/05/2010",
"salary" : 17000,
"gross" : {
"basic" : 11000,
"da" : 4500,
"hra" : 1500
},
"deduction" : {
"pf" : 3000,
"pt" : 300,
"it" : 400
}
}
{
"_id" : ObjectId("567532fbf61afaaed2aae48d"),
"emp_code" : "E007",
"emp_name" : "Burg Hence",
"date_of_join" : "27/08/2011",
"salary" : 20000,
"gross" : {
"basic" : 14000,
"da" : 5000,
"hra" : 1000
},
"deduction" : {
"pf" : 2500,
"pt" : 300,
"it" : 200
}
}
{
"_id" : ObjectId("56753307f61afaaed2aae48e"),
"emp_code" : "E004",
"emp_name" : "Kim Nail",
"date_of_join" : "16/10/2010",
"salary" : 17000,
"gross" : {
"basic" : 14000,
"da" : 3000,
"hra" : 0
},
"deduction" : {
"pf" : 2000,
"pt" : 300,
"it" : 200
}
}
Пример: сгруппировать по двум полям
В следующем примере сгруппированы по полям date_of_join и gross.basic те документы, у которых date_of_join больше 01.01.2009.
db.empdetails.group(
{
key: { "date_of_join": 1, "gross.basic": 1 },
cond: { "date_of_join": { $gt: "01/01/2009" } },
reduce: function ( curr, result ) { },
initial: { }
}
);
Выход
[ { "date_of_join": "15/09/2013", "gross.basic": 12000 }, { "date_of_join": "23/05/2010", "gross.basic": 11000 }, { "date_of_join": "27/08/2011", "gross.basic": 14000 }, { "date_of_join": "16/10/2010", "gross.basic": 14000 } ]
Пример: сгруппировать по двум полям
В следующем примере группируются по полям date_of_join и gross.basic документы, имеющие date_of_join больше 01.01.2009, и вычисляется сумма основного поля для каждой группировки:
db.empdetails.group(
{
key: { "date_of_join": 1, "gross.basic": 1 },
cond: { "date_of_join": { $gt: "01/01/2009" } },
reduce: function ( curr, result ) {
result.total += curr.gross.basic;
},
initial: { total : 0 }
}
);
Выход:
[ { "date_of_join": "15/09/2013", "gross.basic": 12000, "всего": 12000 }, { "date_of_join": "23/05/2010", "gross.basic": 11000, "всего": 11000 }, { "date_of_join": "27/08/2011", "gross.basic": 14000, "всего": 14000 }, { "date_of_join": "16/10/2010", "gross.basic": 14000, "всего": 14000 } ]
Получить данные о ресторанах здесь
Предыдущая: db.collection. метод getShardVersion ()
Далее: метод db.collection.insert ()
Новый контент: Composer: менеджер зависимостей для PHP , R программирования