sql >> Base de Datos >  >> NoSQL >> MongoDB

Ordenar el resultado de addToSet de agregación

Sí, es posible, pero enfóquelo de manera diferente. Solo proporciono mis propios datos para esto, pero entenderás el concepto.

Mi muestra:

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

Voy a "semicitar" el CTO en esto y afirmar que Sets se consideran desordenados .

Hay una declaración real de JIRA, grupos de Google que dice algo así. Así que tomémoslo de "Elliot" y aceptemos que esta voluntad sea ​​el caso.

Entonces, si desea un resultado ordenado, debe masajear de esa manera con etapas como esta

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" }}}

])

Y luego hacer lo que sea. Pero ahora su matriz está ordenada.