Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A:
núcleo virtual de MongoDB
El $lastN
operador devuelve los últimos n elementos de una matriz. Resulta útil cuando desea limitar el número de elementos devueltos desde el final de una matriz, como obtener los elementos más recientes de una lista ordenada cronológicamente.
Sintaxis
La sintaxis del $objectToArray
operador es la siguiente:
{
$lastN: {
input: <array>,
n: <number>
}
}
Parámetros
Descripción | |
---|---|
input |
Matriz desde la que se van a devolver los últimos n elementos. |
n |
Número de elementos que se van a devolver desde el final de la matriz. Debe ser un entero positivo. |
Ejemplo
Vamos a comprender el uso con un JSON de ejemplo del conjunto de datos stores
.
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"promotionEvents": [
{
"eventName": "Massive Markdown Mania",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 6, "Day": 29 },
"endDate": { "Year": 2023, "Month": 7, "Day": 9 }
}
},
{
"eventName": "Fantastic Deal Days",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 9, "Day": 27 },
"endDate": { "Year": 2023, "Month": 10, "Day": 7 }
}
},
{
"eventName": "Discount Delight Days",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 12, "Day": 26 },
"endDate": { "Year": 2024, "Month": 1, "Day": 5 }
}
},
{
"eventName": "Super Sale Spectacular",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 3, "Day": 25 },
"endDate": { "Year": 2024, "Month": 4, "Day": 2 }
}
},
{
"eventName": "Grand Deal Days",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 6, "Day": 23 },
"endDate": { "Year": 2024, "Month": 6, "Day": 30 }
}
},
{
"eventName": "Major Bargain Bash",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 9, "Day": 21 },
"endDate": { "Year": 2024, "Month": 9, "Day": 30 }
}
}
]
}
Ejemplo 1: Obtener los dos últimos eventos de promoción
Supongamos que quiere obtener los dos eventos de promoción más recientes de una tienda.
db.stores.aggregate([
{ $match: {"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74"} },
{
$project: {
name: 1,
lastTwoPromotions: {
$lastN: {
input: "$promotionEvents",
n: 2
}
}
}
}
])
Esto genera la siguiente salida:
[
{
_id: '40d6f4d7-50cd-4929-9a07-0a7a133c2e74',
name: 'Proseware, Inc. | Home Entertainment Hub - East Linwoodbury',
lastTwoPromotions: [
{
eventName: 'Grand Deal Days',
promotionalDates: {
startDate: { Year: 2024, Month: 6, Day: 23 },
endDate: { Year: 2024, Month: 6, Day: 30 }
},
discounts: [
{ categoryName: 'Remote Controls', discountPercentage: 7 },
{ categoryName: 'Televisions', discountPercentage: 11 },
{
categoryName: 'Business Projectors',
discountPercentage: 13
},
{ categoryName: 'Laser Projectors', discountPercentage: 6 },
{ categoryName: 'Projectors', discountPercentage: 6 },
{ categoryName: 'Projector Screens', discountPercentage: 24 }
]
},
{
eventName: 'Major Bargain Bash',
promotionalDates: {
startDate: { Year: 2024, Month: 9, Day: 21 },
endDate: { Year: 2024, Month: 9, Day: 30 }
},
discounts: [
{ categoryName: 'Sound Bars', discountPercentage: 9 },
{ categoryName: 'VR Games', discountPercentage: 7 },
{ categoryName: 'Xbox Games', discountPercentage: 25 },
{
categoryName: 'Projector Accessories',
discountPercentage: 18
},
{ categoryName: 'Mobile Games', discountPercentage: 8 },
{ categoryName: 'Projector Cases', discountPercentage: 22 }
]
}
]
}
]
Ejemplo 2: Obtener las tres últimas categorías de ventas
También puede usar $lastN
para obtener las últimas categorías de ventas.
db.stores.aggregate([
{ $match: {"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74"} },
{
$project: {
name: 1,
lastThreeCategories: {
$lastN: {
input: "$sales.salesByCategory",
n: 3
}
}
}
}
])
Esto devuelve las tres últimas categorías de ventas de la matriz salesByCategory.
[
{
_id: '40d6f4d7-50cd-4929-9a07-0a7a133c2e74',
name: 'Proseware, Inc. | Home Entertainment Hub - East Linwoodbury',
lastThreeCategories: [
{ categoryName: 'Game Controllers', totalSales: 43522 },
{ categoryName: 'Remote Controls', totalSales: 28946 },
{ categoryName: 'VR Games', totalSales: 32272 }
]
}
]
Contenido relacionado
- Revise las opciones para migrar de MongoDB a Azure Cosmos DB para MongoDB (vCore).
- Obtenga más información sobre la compatibilidad de características con MongoDB.