кодесурса
«MongoDB

Оператор этапов агрегации MongoDB - $ out

script1adsense2code
script1adsense3code

Описание

MongoDB $ out записывает результирующий документ конвейера агрегации в указанную коллекцию. Оператор $ out должен быть последним этапом в конвейере. Оператор $ out позволяет структуре агрегации возвращать наборы результатов любого размера.

Синтаксис:

 {$ out: "<output-collection>"}

Свойства:

Создать новую коллекцию

Операция $ out создает новую коллекцию в текущей базе данных, если указанная коллекция еще не существует. Пока агрегация не завершится, коллекция не будет видна. MongoDB не может создать новую коллекцию, если агрегация не удалась.

Заменить существующую коллекцию

Если указанная коллекция уже существует, этап $ out атомарно заменяет существующую коллекцию новой коллекцией результатов. Эта операция не меняет индексы, которые уже существуют в коллекции. В случае сбоя агрегации операция $ out не вносит изменений в существующую коллекцию.

Ограничения индекса

Конвейер не будет завершен, если созданный документ конвейером будет нарушать какие-либо уникальные индексы, включая индекс в поле _id исходной выходной коллекции.

Образец инвойса

{
        "_id" : 1,
        "item" : "doz",
        "qty" : 20,
        "rate" : 10,
        "inv_date" : "02/02/2014"
}
{
        "_id" : 2,
        "item" : "sam",
        "qty" : 15,
        "rate" : 8,
        "inv_date" : "05/12/2014"
}
{
        "_id" : 3,
        "item" : "amp",
        "qty" : 25,
        "rate" : 8,
        "inv_date" : "07/02/2014"
}
{
        "_id" : 4,
        "item" : "doz",
        "qty" : 20,
        "rate" : 10,
        "inv_date" : "02/02/2014"
}
{
        "_id" : 5,
        "item" : "amp",
        "qty" : 10,
        "rate" : 8,
        "inv_date" : "05/12/2014"
}
{
        "_id" : 6,
        "item" : "doz",
        "qty" : 30,
        "rate" : 10,
        "inv_date" : "13/04/2014"
}
{
        "_id" : 7,
        "item" : "sam",
        "qty" : 15,
        "rate" : 8,
        "inv_date" : "05/12/2014"
}
{
        "_id" : null,
        "item" : "mks",
        "qty" : 10,
        "rate" : 20,
        "inv_date" : "17/12/2014"
}

Пример: $ out

Следующая операция агрегации возвращает данные коллекции счетов-фактур с датой счета-фактуры, сгруппированной по элементу, а затем записывает результаты в коллекцию newinvoice.

db.invoice.aggregate( [
                      { $group : { _id : "$item", invoiceDate: { $push: "$inv_date" } } },
                      { $out : "newinvoice" }
                  ] );

После операции коллекция newinvoice содержит следующие документы:

> db.newinvoice.find().pretty();
{ "_id" : "mks", "invoiceDate" : [ "17/12/2014" ] }
{ "_id" : "amp", "invoiceDate" : [ "07/02/2014", "05/12/2014" ] }
{ "_id" : "sam", "invoiceDate" : [ "05/12/2014", "05/12/2014" ] }
{
        "_id" : "doz",
        "invoiceDate" : [
                "02/02/2014",
                "02/02/2014",
                "13/04/2014"
        ]
}

Предыдущая: $ группа
Далее: $ setEquals

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code