MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

ordina per lunghezza della stringa in Mongodb/pymongo

Ci sono molte cose (e API di base) che personalmente adorerei da vedere nel framework di aggregazione come:

Funzioni matematiche

  • log (come nel logaritmo)
  • massimo
  • piano

Matrice

  • somma

Stringa

  • lunghezza

Solo per citarne alcuni.

E questo senza ricorrere a usi oscuri del $mod operatore o altri mezzi in casi quali "soffitto" e "pavimento". Ma sto divagando.

La tua "lunghezza della stringa" rientra in questa categoria. Solleva un problema con JIRA al riguardo. Ma per ora puoi usare mapReduce e la funzionalità JavaScript esistente:

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

Quindi, anche se in realtà ha lo stile funky "mapReduce" di restituire un documento rimodellato e ovviamente tutto corrisponde alla stessa lunghezza in un array, quello che fa è sfruttare la natura di "mapReduce" (non solo limitato a MongoDB ) e consente di ordinare il valore della "chiave" emesso nella risposta.