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 $natural operador obliga a la consulta a usar el orden natural de los documentos de una colección. Se puede usar en operaciones de ordenación para recuperar documentos en el orden en que se insertaron o en orden inverso. Este operador es útil cuando se necesita una ordenación predecible sin depender de campos indexados.
Syntax
{
$natural: <1 | -1>
}
Parámetros
| Parámetro | Description |
|---|---|
1 |
Ordenar en orden natural hacia delante (orden de inserción). |
-1 |
Ordenar en orden natural inverso (orden de inserción inversa). |
Examples
Considere este documento de ejemplo de la colección de tiendas.
{
"_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f",
"name": "First Up Consultants | Bed and Bath Center - South Amir",
"location": {
"lat": 60.7954,
"lon": -142.0012
},
"staff": {
"totalStaff": {
"fullTime": 18,
"partTime": 17
}
},
"sales": {
"totalSales": 37701,
"salesByCategory": [
{
"categoryName": "Mattress Toppers",
"totalSales": 37701
}
]
},
"promotionEvents": [
{
"eventName": "Price Drop Palooza",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 30
}
},
"discounts": [
{
"categoryName": "Bath Accessories",
"discountPercentage": 18
}
]
}
]
}
Ejemplo 1: Ordenación básica de orden natural
Esta consulta recupera todos los almacenes en el orden en que se insertaron en la colección.
db.stores.find({}).sort({
$natural: 1
})
Ejemplo 2: Orden natural inverso
Esta consulta devuelve todos los almacenes en orden de inserción inversa, con los documentos agregados más recientemente en primer lugar.
db.stores.find({}).sort({
$natural: -1
})
Ejemplo 3: Orden natural con filtrado
Esta consulta filtra los almacenes con ventas totales superiores a 50 000 y los devuelve en orden de inserción natural.
db.stores.find({
"sales.totalSales": {
$gt: 50000
}
}).sort({
$natural: 1
})
Ejemplo 4: Orden natural con proyección
Esta consulta devuelve solo el nombre del almacén, las ventas totales y las coordenadas de ubicación en orden de inserción natural.
db.stores.find({}, {
name: 1,
"sales.totalSales": 1,
"location.lat": 1,
"location.lon": 1
}).sort({ $natural: 1 })
Ejemplo 5: Orden natural con límite
Esta consulta devuelve los tres primeros almacenes en su orden de inserción natural.
db.stores.find({}).sort({
$natural: 1
}).limit(3)
Casos de uso
El $natural operador es útil en los escenarios siguientes:
- Seguimientos de auditoría: cuando necesite procesar documentos en el orden, se crearon
- Procesamiento cronológico: para datos sensibles al tiempo en los que importa el orden de inserción
- Procesamiento por lotes: al procesar documentos en orden predecible sin índices
- Depuración: para comprender el orden de almacenamiento natural de los documentos de una colección
Contenido relacionado
- Revise las opciones para migrar de MongoDB a Azure DocumentDB.
- Obtenga más información sobre la compatibilidad de características con MongoDB.