Limitaciones
Se aplican las siguientes restricciones cuando el parámetro numericOrdering
se configura 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 supera los 254 caracteres, los caracteres excedentes se tratan como un número aparte.
Procedimiento
Selecciona un valor para locale.
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 query 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 cómo consultar documentos en Compass, 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.