sql >> Base de Datos >  >> NoSQL >> MongoDB

ordenar por longitud de cadena en Mongodb/pymongo

Hay muchas cosas (y una API básica) que personalmente amaría para ver en el marco de agregación como:

Funciones matemáticas

  • log (como en logaritmo)
  • techo
  • piso

Matriz

  • suma

Cadena

  • longitud

Solo por nombrar algunos.

Y eso sin recurrir a usos oscuros del $mod operador u otros medios en casos tales como "techo" y "piso". Pero estoy divagando.

Su "longitud de cadena" cae en esta categoría. Plantee un problema de JIRA al respecto. Pero por ahora puede usar mapReduce y la funcionalidad de JavaScript existente:

db.collection.mapReduce(
    function() {
        emit( this.item.length, this.item );
    },
    function(key,values) {
        return values;
    },
    { "out": { "inline": 1 } }
)

Entonces, si bien eso tiene el estilo funky "mapReduce" de devolver un documento reformado y, por supuesto, con todo lo que coincide con la misma longitud en una matriz, lo que hace es aprovechar la naturaleza de "mapReduce" (no solo restringido a MongoDB) y permite ordenar el valor de "clave" emitido en la respuesta.