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
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 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.