Jest wiele rzeczy (i podstawowe API), które osobiście pokochałbym do obejrzenia w ramach agregacji, takich jak:
Funkcje matematyczne
- log (jak w logarytmie)
- sufit
- podłoga
Tablica
- suma
Ciąg
- długość
Żeby wymienić tylko kilka.
I to bez uciekania się do niejasnych zastosowań $mod
operatora lub inne środki w takich przypadkach jak „sufit” i „podłoga”. Ale mam dygresję.
Twoja „długość struny” należy do tej kategorii. Zgłoś problem dotyczący JIRA. Ale na razie możesz użyć mapReduce i istniejącej funkcjonalności JavaScript:
db.collection.mapReduce(
function() {
emit( this.item.length, this.item );
},
function(key,values) {
return values;
},
{ "out": { "inline": 1 } }
)
Tak więc, chociaż faktycznie ma to funky styl "mapReduce" zwracania dokumentu o zmienionym kształcie i oczywiście wszystko pasujące do tej samej długości w tablicy, to co robi, to wykorzystuje naturę "mapReduce" (nie tylko ograniczone do MongoDB ) i umożliwia sortowanie emitowanej wartości „klucza” w odpowiedzi.