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

$createObjectId (agregación) (operador de expresión)

Nuevo en la versión 8.3.

$createObjectId

Generar un nuevo aleatorio ObjectId() value.

Usar $createObjectId para generar valores únicos de ObjectId en un pipeline de agregación o en una actualización basada en expresión.

Por ejemplo, puedes generar nuevos campos de identificador o reemplazar los valores id existentes para que otras etapas puedan distinguir entre document. Esto incluye a los operadores que dependen de un valor estable de _id, como $graphLookup.

$createObjectId tiene la siguiente sintaxis:

{
$createObjectId: { }
}

Nota

Debes utilizar un objeto vacío ({}) como argumento.

$createObjectId se comporta de la siguiente manera:

Argument
Comportamiento

{}

Devuelve un nuevo valor aleatorio de tipo BSON ObjectId().

Cualquier otro valor

La operación falla con FailedToParse.

Tip

Para convertir un valor existente en ObjectId, usa $toObjectId.

Los ejemplos de esta página utilizan datos del conjunto de datos de muestra sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si se realizó alguna modificación en las bases de datos de muestra, es posible que se deban descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.

Este ejemplo añade valores de ObjectId a una vista para que otras etapas de agregación puedan confiar en un valor estable de _id.

En la sample_mflix base de datos, crea una vista sobre la movies colección que oculte el _id campo original:

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

Las etapas que dependen de _id no se comportan como se espera con esta vista porque los documentos ya no tienen un campo _id. Por ejemplo, una etapa de recorrido en grafo, como $graphLookup, utiliza _id internamente para rastrear los documents visitados y eliminar duplicados en los resultados.

Para utilizar esta vista con etapas que esperan un identificador estable, crea una segunda vista que agregue un campo único _id con $createObjectId:

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

Ahora puedes ejecutar una agregación que trate cada document en moviesViewWithId como un nodo distinto. Por ejemplo, la siguiente etapa $graphLookup encuentra otras películas que comparten miembros del elenco con cada película:

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

En este pipeline, $createObjectId garantiza que cada document en la vista tenga un valor único de ObjectId en _id. Las etapas que dependen de un identificador estable pueden distinguir correctamente entre document.

Volver

$covarianceSamp

En esta página