sql >> Databáze >  >> NoSQL >> MongoDB

Seřaďte pole v dokumentu pomocí MongoDB

Vidím problém. Lidé hledají a nacházejí tuto odpověď stackoverflow:

Je to špatně, protože nikdy „nerekonstruuje“ pole.

Uděláte to pomocí $group a $push , a protože seskupujete, budete chtít $first pro ostatní pole v dokumentu, který chcete:

db.TrafficStatistic.aggregate([
   { "$unwind": "$statistic" },
   { "$sort": { "_id": 1, "statistic.data.desktop.users": 1 } },
   { "$group": {
       "_id": "$_id",
       "monthStart" : { "$first": "$monthStart" },
       "monthEnd" : { "$first": "$monthEnd" },
       "date" : { "$first": "$date" },
       "statistic": { "$push": "$statistic" }
   }}
])

Všimněte si také $sort se použije na "_id" a další pole k třídění. Je to proto, aby se řazení použilo na dokument a je důležité, když jsou podrobnosti dokumentu sestaveny zpět do $group .

Nyní dokument vypadá stejně jako dříve, ale tentokrát jsou členy pole seřazeny.




  1. Chybový kód sady replik 76

  2. Mongodump získává prázdné složky

  3. MongoDB findAndModify. Je to opravdu atomové? Pomozte napsat řešení pro uzavřenou aktualizaci

  4. Jak monitorovat MongoDB pomocí Prometheus &ClusterControl