Como contar campos dentro de uma agregação MongoDB? [duplicado]
Nov 25 2020
Eu tenho o seguinte código:
db.company_suppressions.aggregate([
{$match: {company_id: ObjectId('5edd3f71c130ea5378977d41')}}, {$group: {"_id": null, emails: {$push: "$email"}, phones: {$push: "$phone"} } },
{$project: {emails: true, phones: true, _id: false}}
])
Ele retorna isso, que é exatamente o que eu quero:
[
{
"emails": ["[email protected]", "[email protected]", "[email protected]", "[email protected]"],
"phones": ["3331234451", "3331234454", "7423742992", "1740742393", "4321221133"]
}
]
Mas às vezes preciso ver apenas as contagens dos campos correspondentes. Existe uma maneira simples de ajustar esse pipeline de agregação para que ele retorne isso:
[
{
"emails": 4,
"phones": 5
}
]
Respostas
1 varman Nov 25 2020 at 10:33
Você pode usar $size
para contar uma matriz,
db.collection.aggregate([
{
$project: {
emails: {
$size: "$emails"
},
phones: {
$size: "$phones"
}
}
}
])
Play Mongo de trabalho
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino