sql >> Databasteknik >  >> NoSQL >> MongoDB

sortera efter stränglängd i Mongodb/pymongo

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.



  1. Testa tom sträng i mongodb och pymongo

  2. MongoDB C#-drivrutin - Ignorera fält vid bindning

  3. Vad är tcp-backlog i redis.conf

  4. MongoDB på Azure:Hur man väljer rätt instanstyp?