Det finns många saker (och grundläggande API) som jag personligen skulle gilla att se i aggregeringsramverket som:
Matematiska funktioner
- logg (som i logaritm)
- tak
- golv
Array
- summa
Sträng
- längd
Bara för att nämna några.
Och det är utan att tillgripa obskyra användningar av $mod
operatör eller andra medel i sådana fall som "tak" och "golv". Men jag avviker.
Din "stränglängd" faller inom denna kategori. Ta upp en JIRA-fråga om det. Men för närvarande kan du använda mapReduce och den befintliga JavaScript-funktionaliteten:
db.collection.mapReduce(
function() {
emit( this.item.length, this.item );
},
function(key,values) {
return values;
},
{ "out": { "inline": 1 } }
)
Så även om det faktiskt har den läckra "mapReduce"-stilen att returnera ett omformat dokument och med naturligtvis allt som matchar samma längd i en array, vad det gör är att dra fördel av naturen av "mapReduce" (inte bara begränsat till MongoDB ) och låter det utsända "nyckel"-värdet sorteras i svaret.