Оператор этапов агрегации MongoDB - $ out
Описание
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 программирования