MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

trier par longueur de chaîne dans Mongodb/pymongo

Il y a beaucoup de choses (et d'API de base) que j'aimerais personnellement aimer à voir dans le framework d'agrégation tel que :

Fonctions mathématiques

  • log (comme dans logarithme)
  • plafond
  • étage

Tableau

  • somme

Chaîne

  • longueur

Pour n'en nommer que quelques-uns.

Et cela sans recourir à des usages obscurs du $mod opérateur ou d'autres moyens dans des cas tels que "ceil" et "floor". Mais je m'égare.

Votre "longueur de chaîne" entre dans cette catégorie. Soulevez un problème JIRA à ce sujet. Mais pour l'instant, vous pouvez utiliser mapReduce et la fonctionnalité JavaScript existante :

db.collection.mapReduce(
    function() {
        emit( this.item.length, this.item );
    },
    function(key,values) {
        return values;
    },
    { "out": { "inline": 1 } }
)

Ainsi, bien que cela ait réellement le style funky "mapReduce" de renvoyer un document remodelé et avec bien sûr tout correspondant à la même longueur dans un tableau, ce qu'il fait, c'est tirer parti de la nature de "mapReduce" (pas seulement restreint à MongoDB ) et permet de trier la valeur "clé" émise dans la réponse.