Es gibt viele Dinge (und grundlegende APIs), die ich persönlich lieben würde im Aggregationsframework zu sehen, wie zum Beispiel:
Mathematische Funktionen
- log (wie in Logarithmus)
- Decke
- Etage
Array
- Summe
Zeichenfolge
- Länge
Um nur einige zu nennen.
Und das ohne auf obskure Verwendungen von $mod
zurückzugreifen Bediener oder andere Mittel in solchen Fällen wie "Decke" und "Boden". Aber ich schweife ab.
Ihre "Saitenlänge" fällt in diese Kategorie. Heben Sie ein JIRA-Problem darüber auf. Aber jetzt können Sie mapReduce und die vorhandene JavaScript-Funktionalität verwenden:
db.collection.mapReduce(
function() {
emit( this.item.length, this.item );
},
function(key,values) {
return values;
},
{ "out": { "inline": 1 } }
)
Während das also tatsächlich den funky "mapReduce"-Stil hat, ein neu geformtes Dokument zurückzugeben und natürlich alles die gleiche Länge in einem Array hat, nutzt es die Natur von "mapReduce" (nicht nur eingeschränkt an MongoDB ) und ermöglicht das Sortieren des ausgegebenen „Schlüssel“-Werts in der Antwort.