Limitaciones
Las siguientes restricciones se aplican cuando el parámetro numericOrdering
se establece en true:
Solo se consideran en las comparaciones las substrings de enteros no negativos contiguos de dígitos.
numericOrderingno admite:+-exponentes
Solo los puntos de código Unicode en la categoría de Número o dígito decimal (Nd) se consideran dígitos.
Si la longitud del número excede 254 caracteres, los caracteres sobrantes se tratan como un número separado.
Procedimiento
En Atlas, vaya a la Data Explorer Página para su proyecto.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Data Explorer en la sección Database.
El Data Explorer se muestra.
Seleccione un localevalor para.
Debe seleccionar un locale de los idiomas admitidos por MongoDB.
Todos los demás parámetros de intercalación son opcionales. Para obtener descripciones de los campos, consulte Intercalación.
Ejemplo
Considere una colección con los siguientes valores de strings numéricas y decimales:
[ { "n": "1" }, { "n": "2" }, { "n": "-2.1" }, { "n": "2.0" }, { "n": "2.20" }, { "n": "10"}, { "n": "20" }, { "n": "20.1" }, { "n": "-10" }, { "n": "3" } ]
La siguiente consulta de búsqueda utiliza un documento de intercalación que contiene el parámetro numericOrdering:
db.c.find( { }, { _id: 0 } ).sort( { n: 1 } ).collation( { locale: 'en_US', numericOrdering: true } )
Para obtener más información sobre la consulta de documentos en Atlas, consulte Consulta tus datos.
Las operaciones devuelven los siguientes resultados:
[ { "n": "-2.1" }, { "n": "-10" }, { "n": "1" }, { "n": "2" }, { "n": "2.0" } { "n": "2.20" }, { "n": "3" }, { "n": "10" }, { "n": "20" }, {"n": "20.1" } ]
numericOrdering: trueordena los valores de strings en orden ascendente como si fueran valores numéricos.Los dos valores negativos
-2.1y-10no están ordenados en el orden de clasificación esperado porque tienen caracteres-no admitidos.