MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

classificar por comprimento de string em Mongodb/pymongo


Há muitas coisas ( e API básica ) que eu pessoalmente adoraria para ver na estrutura de agregação, como:

Funções matemáticas

  • log (como em logaritmo)
  • teto
  • piso

Matriz

  • soma

Sequência

  • comprimento

Só para citar alguns.

E isso sem recorrer a usos obscuros do $mod operador ou outro meio em casos como "teto" e "piso". Mas eu discordo.

Seu "comprimento da string" se enquadra nessa categoria. Levante um problema do JIRA sobre isso. Mas por enquanto você pode usar mapReduce e a funcionalidade JavaScript existente:
db.collection.mapReduce(
    function() {
        emit( this.item.length, this.item );
    },
    function(key,values) {
        return values;
    },
    { "out": { "inline": 1 } }
)

Então, embora isso realmente tenha o estilo funky "mapReduce" de retornar um documento reformulado e, é claro, tudo correspondendo ao mesmo comprimento em uma matriz, o que ele faz é aproveitar a natureza de "mapReduce" (não apenas restrito para MongoDB ) e permite que o valor "chave" emitido seja classificado na resposta.