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

$documents (agregação)

Nesta página

  • Definição
  • Sintaxe
  • Comportamento
  • Exemplos
$documents

Novidades na versão 5.1: (Também disponível em 5.0.3)

Retorna documentos literais de valores de entrada.

O estágio $documents tem a seguinte forma:

{ $documents: <expression> }

$documents aceita qualquer expressão válida que se resolva em uma array de objetos. Isso inclui:

  • variáveis do sistema, como $$NOW ou $$SEARCH_META

  • $let expressões

  • variáveis no escopo de expressões $lookup

As expressões que não determinam um documento atual, como $myField ou $$ROOT, resultarão em um erro.

Crie dados de teste e depuração para um estágio de pipeline sem criar coleções de teste.

db.aggregate(
[
{ $documents: [ { x: 10 }, { x: 2 }, { x: 5 } ] },
{ $bucketAuto: { groupBy: "$x", buckets: 4 } }
]
)

A expressão de aggregation não especifica uma collection. Ela utiliza os dados de entrada destacado no estágio $documents como entrada no estágio $bucketAuto .

[
{ _id: { min: 2, max: 5 }, count: 1 },
{ _id: { min: 5, max: 10 }, count: 1 },
{ _id: { min: 10, max: 10 }, count: 1 }
]

Correlacione documentos em uma collection com outros dados usando $documents para modificar $lookup saída.

Crie a coleção locations.

db.locations.insertMany(
[
{ zip: 94301, name: "Palo Alto" },
{ zip: 10019, name: "New York" }
]
)

Utilize o $documents como fonte de dados para transformar os documentos.

db.locations.aggregate(
[
{ $match: {} },
{ $lookup:
{
localField: "zip",
foreignField: "zip_id",
as: "city_state",
pipeline:
[
{ $documents:
[
{ zip_id: 94301, name: "Palo Alto, CA" },
{ zip_id: 10019, name: "New York, NY" }
]
}
]
}
}
]
)

A saída correlaciona os dados na coleção locations com os valores no estágio de pipeline $documents .

[
{
_id: ObjectId("618949d60f7bfd5f5689490d"),
zip: 94301,
name: 'Palo Alto',
city_state: [ { zip_id: 94301, name: 'Palo Alto, CA' } ]
},
{
_id: ObjectId("618949d60f7bfd5f5689490e"),
zip: 10019,
name: 'New York',
city_state: [ { zip_id: 10019, name: 'New York, NY' } ]
}
]
  • O campo zip corresponde ao campo zip_id

  • O parâmetro as cria um novo campo de saída

Para obter detalhes sobre subqueries que usam essa sintaxe $lookup, consulte Subqueries correlacionadas usando sintaxe concisa.

← $densify (agregação)