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.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$top (función de ventana)

$top

Devuelve el elemento superior dentro de una ventana según el orden de clasificación especificado.

Nota

Desambiguación

Esta página describe $top cuando se usa como función de ventana. También puede usar $top en estos otros contextos:

  • $top (expression operator), que devuelve el elemento superior de una matriz según un orden de clasificación especificado.

  • $top (accumulator), que devuelve el elemento superior dentro de un grupo según el orden de clasificación especificado.

{
$setWindowFields: {
...
output: {
<field>: {
$top: {
sortBy: { <field1>: <sort order>, <field2>: <sort order> ... },
output: <expression>
}
}
}
}
}
Campo
Necesidad
Descripción

sortBy

Requerido

Define el orden de clasificación de los elementos dentro de la ventana, con una sintaxis similar a $sort. No afecta el orden de los documentos en la salida del pipeline.

salida

Requerido

Especifica la salida para cada elemento de la ventana. Puede ser cualquier expresión.

La función de ventana $top tiene los siguientes comportamientos para valores nulos y faltantes:

  • $top no filtra los valores nulos.

  • $top convierte los valores faltantes en null.

Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.

Este ejemplo utiliza $top como función de ventana para identificar la película mejor valorada del mismo año para cada documento de película. El conjunto de datos se filtra para incluir solo películas familiares con clasificación PG de 1980–1982.

db.movies.aggregate( [
{
$match: {
year: { $in: [ 1980, 1981, 1982 ] },
"imdb.rating": { $exists: true, $ne: null },
genres: "Family",
rated: "PG"
}
},
{
$setWindowFields: {
partitionBy: "$year",
output: {
highestRatedInYear: {
$top: {
output: { title: "$title", rating: "$imdb.rating" },
sortBy: { "imdb.rating": -1 }
},
window: {
documents: [ "unbounded", "unbounded" ]
}
}
}
}
},
{
$project: {
_id: 0,
title: 1,
year: 1,
rating: "$imdb.rating",
highestRatedInYear: 1
}
},
{
$limit: 10
}
] )

En este ejemplo:

Este método conserva todos los documentos individuales de las películas e incluye una referencia a la película más taquillera de cada año.

Califique esta página