Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /

$createObjectId (agregação) ( operador de expressão )

Novidades na versão 8.3.

$createObjectId

Gere um novo valor ObjectId() aleatório.

Use $createObjectId para gerar valores de ObjectId exclusivos em um pipeline de agregação ou atualização baseada em expressão.

Por exemplo, você pode gerar novos campos de identificador ou substituir valores de id existentes para que outros estágios possam distinguir entre documentos. Isso inclui operadores que dependem de um valor _id estável, como $graphLookup.

$createObjectId tem a seguinte sintaxe:

{
$createObjectId: { }
}

Observação

Você deve usar um objeto vazio ({}) como argumento.

$createObjectId se comporta da seguinte forma:

Argument
Comportamento

{}

Retorna um novo valor aleatório do tipo BSON ObjectId().

Qualquer outro valor

A operação falha com FailedToParse.

Dica

Para converter um valor existente para um ObjectId, utilize $toObjectId.

Os exemplos nesta página usam dados do conjunto de dados de amostra sample_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.

Este exemplo adiciona valores ObjectId a uma visualização para que outros estágios de agregação possam confiar em um valor _id estável.

No sample_mflix banco de dados, crie uma visualização sobre a movies coleção que oculta o _id campo original:

db.createView(
"moviesView",
"movies",
[
{ $project: { _id: 0, title: 1, cast: 1 } }
]
)

Os estágios que dependem de _id não se comportam conforme o esperado com essa visualização porque os documentos não têm mais um campo _id. Por exemplo, um estágio transversal do grafo como $graphLookup usa _id internamente para acompanhar visited documents e eliminar duplicações de resultados.

Para usar essa visualização com estágios que esperam um identificador estável, crie uma segunda visualização que adicione um _id campo exclusivo $createObjectId com:

db.createView(
"moviesViewWithId",
"moviesView",
[
{
$project: {
_id: { $createObjectId: {} }, // unique id
title: 1,
cast: 1
}
}
]
)

Agora você pode executar uma agregação que trata cada document no moviesViewWithId como um nó distinto. Por exemplo, o seguinte estágio $graphLookup encontra outros filmes que compartilham membros do elenco com cada filme:

db.movies.aggregate( [
{
$graphLookup: {
from: "moviesViewWithId",
startWith: "$cast",
connectFromField: "cast",
connectToField: "cast",
as: "relatedMovies"
}
}
] )

Neste pipeline, $createObjectId garante que cada document na visualização tenha um valor ObjectId único no _id. Os estágios que dependem de um identificador estável podem distinguir entre documentos corretamente.

Voltar

$covarianceSamp

Nesta página