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

Use uma visualização para participar de duas collections

Use $lookup para criar uma visualização de duas coleções. Os aplicativos podem consultar a visualização sem construir ou manter pipelines complexos.

Os exemplos nesta página usam dados do conjunto de dados de amostrasample_mflix . Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB, consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.

db.createView( "movieComments", "movies", [
{ $match: { year: { $gte: 2014 } } },
{
$lookup:
{
from: "comments",
localField: "_id",
foreignField: "movie_id",
as: "movieComments"
}
},
{
$project:
{
_id: 0,
title: 1,
year: 1,
numComments: { $size: "$movieComments" }
}
}
] )

No exemplo:

  • O estágio $match filtra a coleção movies para documentos lançados a partir de 2014.

  • O estágio $lookup usa o campo _id na coleção movies para unir documentos na coleção comments que tenham campos movie_id correspondentes.

  • Os documentos correspondentes são adicionados como uma array no campo movieComments.

  • O estágio $project seleciona um subconjunto dos campos disponíveis, incluindo numComments, que é a contagem de comentários para cada filme.

Query a visualização para os cinco filmes com mais comentários:

db.movieComments.aggregate( [
{
$group:
{
_id: "$title",
totalComments: { $sum: "$numComments" }
}
},
{ $sort: { totalComments: -1 } },
{ $limit: 5 }
] )
[
{ _id: '<title>', totalComments: <num> },
{ _id: '<title>', totalComments: <num> },
{ _id: '<title>', totalComments: <num> },
{ _id: '<title>', totalComments: <num> },
{ _id: '<title>', totalComments: <num> }
]

Voltar

Criar e e fazer query

Nesta página