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.