кодесурса
«MongoDB

MongoDB: метод db.collection.group ()

script1adsense2code
script1adsense3code

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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code