Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$size (agregação)

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Comportamento
  • Exemplo
$size

Conta e retorna o número total de itens em um array.

Você pode utilizar o $size para implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

$size tem a seguinte sintaxe:

{ $size: <expression> }

O argumento para $size pode ser qualquer expressão , desde que seja resolvida em uma array. Para obter mais informações sobre expressões, consulte Operadores de expressão.

O argumento para $size deve resultar em uma array. Se o argumento para $size estiver ausente ou não resultar em uma array, ocorrerão erros de $size.

Considere uma coleção inventory com os seguintes documentos:

{ "_id" : 1, "item" : "ABC1", "description" : "product 1", colors: [ "blue", "black", "red" ] }
{ "_id" : 2, "item" : "ABC2", "description" : "product 2", colors: [ "purple" ] }
{ "_id" : 3, "item" : "XYZ1", "description" : "product 3", colors: [ ] }
{ "_id" : 4, "item" : "ZZZ1", "description" : "product 4 - missing colors" }
{ "_id" : 5, "item" : "ZZZ2", "description" : "product 5 - colors is string", colors: "blue,red" }

A seguinte operação do pipeline de agregação utiliza o operador $size para retornar o número de elementos na array colors:

db.inventory.aggregate([
{
$project: {
item: 1,
numberOfColors: { $cond: { if: { $isArray: "$colors" }, then: { $size: "$colors" }, else: "NA"} }
}
}
] )

A operação retorna o seguinte:

{ "_id" : 1, "item" : "ABC1", "numberOfColors" : 3 }
{ "_id" : 2, "item" : "ABC2", "numberOfColors" : 1 }
{ "_id" : 3, "item" : "XYZ1", "numberOfColors" : 0 }
{ "_id" : 4, "item" : "ZZZ1", "numberOfColors" : "NA" }
{ "_id" : 5, "item" : "ZZZ2", "numberOfColors" : "NA" }
← $shift (agregação)