MongoDB Aggregation Stages Operator - $out
Description
The MongoDB $out write the resulting document of the aggregation pipeline to a specified collection. The $out operator must be the last stage in the pipeline. The $out operator lets the aggregation framework return result sets of any size.
Syntax:
{ $out: "<output-collection>" }
Properties:
Create New Collection
The $out operation creates a new collection in the current database if the specified one does not already exist. Until the aggregation completes the collection can not be visible. The new collection can not be created by MongoDB if the aggregation faild.
Replace Existing Collection
If the specified collection already exists, the $out stage atomically replaces the existing collection with the new results collection. This operation does not change any indexes that are already exists in the collection. If the aggregation fails, the $out operation makes no changes to the pre-existing collection.
Index Constraints
The pipeline will fail to complete if the produced document by the pipeline would violate any unique indexes, including the index on the _id field of the original output collection.
Sample collection invoice
{
"_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"
}
Example : $out
The following aggregation operation returns the data of the invoice collection to have invoice date grouped by the item and then writes the results to the newinvoice collection.
db.invoice.aggregate( [
{ $group : { _id : "$item", invoiceDate: { $push: "$inv_date" } } },
{ $out : "newinvoice" }
] );
After the operation, the newinvoice collection contains the following documents:
> 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"
]
}
Previous:
$group
Next:
$setEquals
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/mongodb/aggregation/mongodb-aggregatrion-out-operator.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics