Docs Menu
Docs Home
/ /

$documentos (etapa de agregación)

$documents

Novedades en la versión 6.0.

Devuelve documentos literales desde valores de entrada.

El $documents El escenario tiene la siguiente forma:

{ $documents: <expression> }
  • Solo puede utilizar $documents en una canalización de agregación a nivel de base de datos.

  • Debe utilizar $documents como la primera etapa de una secuencia de agregación.

Consulta a continuación ejemplos de uso.

$documents Acepta cualquier expresión válida que se resuelva en una matriz de objetos. Esto incluye:

  • variables del sistema, como $$NOW or $$SEARCH_META

  • $let expresiones

  • variables en el alcance de las $lookup expresiones

Las expresiones que no se resuelven en un documento actual, como $myField $$ROOTo, generarán un error.

Cree datos de prueba y depuración para una etapa de la canalización sin crear colecciones de pruebas.

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

La expresión de agregación no especifica una colección. Utiliza los datos de entrada de $documents la etapa resaltada como entrada para la $bucketAuto etapa.

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

Correlacione documentos de una colección con otros datos usando para $documents $lookup modificar la salida.

Crea la colección locations.

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

Utilice como fuente de datos para transformar los $documents 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" }
]
}
]
}
}
]
)

La salida correlaciona los datos de la locations colección con los valores de la $documents etapa de canalización.

[
{
_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' } ]
}
]
  • El campo zip corresponde al campo zip_id

  • El parámetro as crea un nuevo campo de salida

Para usar el controlador MongoDB.NET/C# para agregar una $documents etapa a una canalización de agregación, llame a Documents()método en un PipelineDefinition objeto.

El siguiente ejemplo crea una etapa de pipeline que crea tres documentos:

var documentArray = new[]
{
new BsonDocument {{ "title", "The Shawshank Redemption" }},
new BsonDocument {{ "title", "Back to the Future" }},
new BsonDocument {{ "title", "Jurassic Park" }},
};
var pipeline = new EmptyPipelineDefinition<NoPipelineInput>()
.Documents(documentArray);

Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $documents a una canalización de agregación, utilice el Operador $documents en un objeto de canalización.

El siguiente ejemplo crea una etapa de canalización que genera tres documentos. A continuación, ejecuta la canalización de agregación:

const pipeline = [
{
$documents: [
{ "title": "The Shawshank Redemption" },
{ "title": "Back to the Future" },
{ "title": "Jurassic Park" }
]
}
];
const cursor = collection.aggregate(pipeline);
return cursor;

Para obtener detalles sobre las subconsultas que utilizan la sintaxis,$lookup consulte Subconsultas correlacionadas que utilizan sintaxis concisa.

Volver

$densify

En esta página