Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$setStreamMeta Stage de agregación (Stream Processing)

$setStreamMeta

La fase $setStreamMeta establece campos de metadatos para los documentos entrantes. Puedes utilizar estos metadatos para realizar operaciones selectivas en documentos basados en valores específicos sin alterar el contenido de los propios documentos.

Un $setStreamMeta etapa tiene la siguiente forma prototipo:

{
$setStreamMeta: {
"<metadata-field>": <expression>
}
}

La etapa $setStreamMeta procesa un documento con los siguientes campos:

Campo
Tipo
Necesidad
Descripción

<metadata-field>

expresión

Requerido

Campo de metadatos que se aplicará a los documentos. Debes establecer tanto la clave como el valor:

  • La clave debe ser una string que comience con stream..

  • El valor debe ser una expresión.

Si no se puede evaluar la expresión, Atlas Stream Processing envía el documento al DLQ.

Para aprender más, consulta el ejemplo.

$setStreamMeta debe ir después de la etapa $source y antes de la etapa $emit o $merge.

Una fuente de datos de transmisión genera un documento por cada pedido realizado en una plataforma de comercio electrónico. Los documentos adoptan la siguiente forma:

{
orderId: 1,
productId: "A",
qty: 2
}

Una base de datos de Atlas contiene una colección products con documentos de la siguiente forma:

[
{_id: "A", name: "Laptop", category: "tech"},
{_id: "B", name: "Shirt", category: "clothing"}
]

La siguiente agregación tiene seis etapas:

  1. La etapa $source recopila documentos de pedidos de la plataforma de comercio electrónico, exponiendo cada registro a medida que se recopila a las siguientes etapas de agregación.

  2. La etapa $lookup une los documentos de los pedidos entrantes a una colección de products en la base de datos shop en el campo _id. El campo de arreglo resultante se llama product.

  3. La etapa $unwind convierte el valor del arreglo de un solo elemento de product en un documento.

  4. La etapa $setStreamMeta configura un campo de metadatos denominado stream.coll igual al valor de product.category.

  5. La etapa $unset remueve el campo product, devolviendo el documento de origen a su forma original.

  6. La etapa $merge fusiona el documento en una colección determinada dinámicamente por el valor de stream.coll.

{
$source: {
documents: [
{
orderId: 1,
productId: "A",
qty: 2
},
{
orderId: 2,
productId: "B",
qty: 1
},
{
orderId: 3,
productId: "A",
qty: 5
}
]
}
},
{
$lookup: {
from: {
connectionName: "atlas",
db: "shop",
coll: "products"
},
localField: "productId",
foreignField: "_id",
as: "product"
}
},
{
$unwind: "$product"
},
{
$setStreamMeta: {
"stream.coll": "$product.category"
}
},
{
$unset: [
"product"
]
},
{
$merge: {
into: {
connectionName: "atlas",
db: "shop",
coll: {
$meta: "stream.coll"
}
}
}
}