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.
El operador $last ordena documentos en uno o varios campos especificados por la consulta y devuelve el último documento que coincide con los criterios de filtrado.
Syntax
{
"$last": <expression>
}
Parámetros
| Parámetro | Description |
|---|---|
expression |
Expresión que se va a evaluar y devolver el último documento del conjunto de resultados |
Examples
Considere este documento de ejemplo de la colección de tiendas.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Ejemplo 1: Obtener el último almacén actualizado dentro de una empresa
Para recuperar el almacén actualizado más recientemente dentro de la empresa First Up Consultants, ejecute una consulta para obtener todas las tiendas dentro de First Up Consultants, ordene los documentos en orden ascendente del campo lastUpdated y devuelva el último documento a partir de los resultados ordenados.
db.stores.aggregate([{
$match: {
company: {
$in: ["First Up Consultants"]
}
}
}, {
$sort: {
lastUpdated: 1
}
}, {
$group: {
_id: "$company",
lastUpdated: {
$last: "$lastUpdated"
}
}
}])
Esta consulta devuelve el siguiente resultado:
[
{
"_id": "First Up Consultants",
"lastUpdated": "ISODate('2024-12-31T13:01:19.097Z')"
}
]
Ejemplo 2: Uso del operador de ventana
Para recuperar el almacén actualizado más recientemente dentro de cada empresa, ejecute una consulta para realizar una partición de los resultados por el campo de la empresa y ordenar los documentos dentro de cada partición en orden ascendente del campo lastUpdated y devolver los resultados ordenados por partición.
db.stores.aggregate([{
$setWindowFields: {
partitionBy: "$company",
sortBy: {
lastUpdated: 1
},
output: {
lastUpdatedDateForStore: {
$last: "$lastUpdated",
window: {
documents: ["current", "unbounded"]
}
}
}
}
}])
El primer resultado devuelto por esta consulta es:
[
{
"_id": "First Up Consultants",
"lastUpdated": "ISODate('2024-12-31T13:01:19.097Z')"
}
]