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

Classificando o resultado addToSet da agregação


Sim, é possível, mas abordá-lo de forma diferente. Estou apenas fornecendo meus próprios dados para isso, mas você entenderá o conceito.

Minha amostra:
{ "array" : [  2,  4,  3,  5,  2,  6,  8,  1,  2,  1,  3,  5,  9,  5 ] }

Vou "semi-citar" o CTO sobre isso e afirmar que Sets são considerados não ordenados .

Existe uma declaração real do JIRA, do Google groups, que é algo assim. Então vamos pegar em "Elliot" e aceitar que isso vai Seja o caso.

Então se você quer um resultado ordenado, você tem que massagear dessa forma com etapas como essa
db.collection.aggregate([

    // Initial unwind
    {"$unwind": "$array"},

    // Do your $addToSet part
    {"$group": {"_id": null, "array": {"$addToSet": "$array" }}},

    // Unwind it again
    {"$unwind": "$array"},

    // Sort how you want to
    {"$sort": { "array": 1} },

    // Use $push for a regular array
    {"$group": { "_id": null, "array": {"$push": "$array" }}}

])

E então faça o que for. Mas agora sua matriz está classificada.