Template
db.collection.aggregate([
{ $match: { <query> } },
]);
Exemplo
db.workers.aggregate([
{ $match: { workerName: "Tiago" } },
]);
Template
db.collection.aggregate([
{ $limit: <inteiro positivo> },
]);
Exemplo
db.products.aggregate([
{ $match: { laptop: 'Dell' } },
{ $limit: 5 },
]);
Template
db.collection.aggregate([
{
$group: {
_id: <expressão>,
<campo1>: { <acumulador1> : <expressão1> },
...
<campoN>: { <acumuladorN> : <expressãoN> },
},
},
]);
Exemplo
db.products.aggregate([
{
$group : {
_id : "$laptopId",
count: { $sum: 1 },
},
},
]);
Template
db.collection.aggregate([
{
project: {
<especificação(ões)>
},
},
]);
Exemplo
db.products.aggregate([
{
$project: {
_id: 0, // ou false
productName: "$laptop",
quantity: 1, // ou true
profit: {
$subtract: ["$sale_price", "$cost_price"]
},
},
},
]);
Template
db.collection.aggregate([
{ $unwind: <caminho do campo array> },
]);
Exemplo
db.streamings.aggregate([
{ $unwind: "$netflix_plans" },
]);
Template
db.collection.aggregate([
{
$lookup: {
from: <coleção para unir>,
localField: <campo dos documentos de entrada>,
foreignField: <campo dos documentos provenientes da coleção conectada,
as: <campo do array de saída>
},
},
]);
Exemplo
db.orders.aggregate([
{
$lookup: {
from: "inventory",
localField: "item",
foreignField: "sku",
as: "inventory_docs"
},
},
]);
Template
db.collection.aggregate([
{
$lookup:
{
from: <coleção para unir>,
let: { <var_1>: <expressão>, …, <var_n>: <expressão> },
pipeline: [ <pipeline a ser executada na coleção unida> ],
as: <campo do array de saída>
}
}
]);
Exemplo
db.orders.aggregate([
{
$lookup:
{
from: "warehouses",
let: { order_item: "$item", order_qty: "$ordered" },
pipeline: [
{ $match:
{ $expr:
{ $and:
[
{ $eq: [ "$stock_item", "$$order_item" ] },
{ $gte: [ "$instock", "$$order_qty" ] }
]
}
}
},
{ $project: { stock_item: 0, _id: 0 } }
],
as: "stockdata"
}
}
])
Template
db.collection.aggregate([
{
$addFields: {
<novoCampo1>: <valor> ,
<novoCampo2>: <valor> ,
...
},
},
]);
Exemplo
db.school.aggregate([
{
$addFields: {
totalHomework: { $sum: "$homework" } ,
totalQuiz: { $sum: "$quiz" }
},
},
{
$addFields: {
totalScore: {
$add: [ "$totalHomework", "$totalQuiz", "$extraCredit" ]
},
},
},
]);
Template
db.collection.aggregate([
{
$project: {
<campo>: {
$add: [ <expressão1>, <expressão2>, ... ]
},
},
},
]);
Exemplo
db.products.aggregate([
{
$project: {
item: 1,
total: {
$add: ["$price", "$fee"]
},
},
},
]);
Template
db.collection.aggregate([
{
$project: {
<campo>: {
$subtract: [
<expression1>,
<expression2>
]
},
},
},
]);
Exemplo
db.products.aggregate([
{
$project: {
item: 1,
total: {
$subtract: [
{ $add: ["$price", "$fee"] },
"$discount"
]
},
},
},
]);
Template
db.collection.aggregate([
{
$project: {
roundedNumber: {
$ceil: <numero>,
},
},
},
]);
Exemplo
db.movies.aggregate([
{
$project: {
value: 1,
ceilingValue: {
$ceil: "$rating",
},
},
},
]);
Template
db.collection.aggregate([
{
$project: {
value: 1,
roundedNumber: {
$floor: <numero>,
},
},
},
]);
Exemplo
db.movies.aggregate([
{
$project: {
value: 1,
floorValue: {
$floor: "$value",
},
},
},
]);
Template
db.collection.aggregate([
{
project: {
<campo>: {
abs: <numero>,
},
},
},
]);
Exemplo
db.operations.aggregate([
{
project: {
delta: {
abs: { $subtract: ["$start", "$end"] },
},
},
},
]);
Template
db.collection.aggregate([
{
project: {
<campo>: {
$multiply: [ <expressão1>, <expressão2>, ... ]
},
},
},
]);
Exemplo
db.operations.aggregate([
{
project: {
date: 1,
item: 1,
total: {
$multiply: [
"$price",
"$quantity"
]
},
},
},
]);
Template
db.collection.aggregate([
{
project: {
<campo>: {
$divide: [ <expressão1>, <expressão2> ]
},
},
},
]);
Exemplo
db.employees.aggregate([
{
project: {
name: 1,
workdays: {
$divide: ["$hours", 8]
},
},
},
]);