MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Risultato dell'aggregazione di ordinamento addToSet

Sì, è possibile, ma affrontalo in modo diverso. Fornisco solo i miei dati per questo, ma otterrai il concetto.

Il mio campione:

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

Farò una "virgoletta parziale" del CTO su questo e affermerò che Sets sono considerati non ordinati .

C'è una vera JIRA, dichiarazione dei gruppi di Google che va qualcosa del genere. Quindi prendiamolo da "Elliot" e accettiamo che questo farà sia il caso.

Quindi, se vuoi un risultato ordinato, devi massaggiare in questo modo con fasi come questa

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 poi fai qualunque cosa. Ma ora il tuo array è ordinato.