diff --git a/docs/database/mongo-db.md b/docs/database/mongo-db.md index 24e1cbc..7468853 100644 --- a/docs/database/mongo-db.md +++ b/docs/database/mongo-db.md @@ -253,12 +253,12 @@ mongoexport --collection=<collection> <options> <connection-string> ```json { - "_id": Objectid() - "<key>": "value" - "<key>": "value" + "_id": "ObjectId()", + "<key>": "value", + "<key>": "value", "innerDocument": { - "<key>": "value" + "<key>": "value", "<key>": "value" } } @@ -274,13 +274,13 @@ NoSQL databases do not have relations and references. It's the app that has to h ```json { - "<key>": "value" + "<key>": "value", "references": ["id1", "id2"] } // referenced { - "_id": "id1" + "_id": "id1", "<key>": "value" } ``` @@ -428,35 +428,42 @@ Shard components are: A **replica set** in MongoDB is a group of `mongod` processes that maintain the `same dataset`. Replica sets provide redundancy and high availability, and are the basis for all production deployments. -## Aggregations +## [Aggregation Framework](https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/) -Sequence of operations applied to a collection as a _pipeline_ to get a result: `db.collection.aggregate(pipeline, options)`. - -[Aggregations Stages][aggeregation_stages_docs]: - -- `$lookup`: Right Join -- `$match`: Where -- `$sort`: Order By -- `$project`: Select \* -- ... - -[aggeregation_stages_docs]: https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/ - -Example: +Sequence of operations applied to a collection as a _pipeline_ to get a result: `db.collection.aggregate(pipeline, options)`. +Each step of the pipeline acts on its inputs and not on the original data in the collection. ```sh -db.collection.aggregate([ + +db.<collection>.aggregate([ + { "$project": { "_id": 0, "<key>": 1, ...} }, + + { "$match": { "<query>" } }, + + { "$group": { + "_id": "<expression>", # Group By Expression (Required) + "<key-1>": { "<accumulator-1>": "<expression-1>" }, + ... + } + }, + { - $lookup: { - from: <collection to join>, - localField: <field from the input documents>, - foreignField: <field from the documents of the "from" collection>, - as: <output array field> + "$lookup": { + "from": "<collection to join>", + "localField": "<field from the input documents>", + "foreignField": "<field from the documents of the 'from' collection>", + "as": "<output array field>" } }, - { $match: { <query> } }, - { $sort: { ... } }, - { $project: { ... } }, - { ... } + + { "$sort": { "<key-1>": "<sort order>", "<key-2>": "<sort order>", ... } }, + + { "$count": "<count-key>" }, + + { "$skip": "<positive 64-bit integer>" } + + { "$limit": "<positive 64-bit integer>" } + + { ... } ]) ```