Gibt es eine Möglichkeit, das Ergebnis von $ addToSet als sortiertes Array zu erhalten?Sortierung Aggregation addToSet Ergebnis
Ich versuchte, die Pipeline zu erweitern und das Array abzuwickeln, sortiere es und gruppiere es erneut, , aber das Ergebnis ist noch nicht sortiert.
Die Arrays sind ziemlich groß und ich versuche zu vermeiden, sie in der Anwendung zu sortieren.
Document Example : { "_id" : ObjectId("52a84825cc8391ab188b4567"), "id" : 129624 "message" : "Sample", "date" : "12-09-2013,17:34:34", "dt" : ISODate("2013-12-09T17:34:34.000Z"), }
Abfrage:
db.uEvents.aggregate( [ {$match : {dt : {$gte : new Date(2014,01,01) , $lt : new Date(2015,01,17)}}} ,{$sort : {dt : 1}} , {$group : { _id : { id : "$id" , year : {'$year' : "$dt"} , month : {'$month' : "$dt"} , day : {'$dayOfMonth' : "$dt"} } ,dt : {$addToSet : "$dt"} }} ] );
Das ist richtig! aber es ist seltsam, dass wenn ich auf der letzten Stufe $ addToSet benutze und nicht $ push es nicht bestellt. –
@alon_r Es ist überhaupt nicht seltsam. Und ** speziell ** wegen dem, was ich vom CTO von MongoDB zitierte. "Sets werden als ungeordnet angesehen". FYI, "Elliot" hat auch Kommentare gemacht, dass ** Sets ** möglicherweise als ** eigener ** Datentyp betrachtet werden, getrennt von Arrays. Daher die Notwendigkeit, * die Unterscheidung umzugestalten. Up-vote, wenn Sie einen Vertreter bekommen. Das ist viel Wissen umsonst. –