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

MongoDB sortering på børn

Du kan gøre det med følgende sammenlægning:

db.collection.aggregate(
  [
    {
      $project: {
      group_id : { $cond : { if: { $ne: [ "$parentId", "" ] }, then: "$parentId", else: "$_id" }},
      count :1
      }
    },
    {
      $group: {
      _id : "$group_id",
      total_count : { $sum: "$count" }
      }
    },
    {
      $sort: {
      total_count : -1
      }
    }
  ]
);

Først projekterer jeg et ekstra felt "group_id", som er udfyldt med _id eller parentId afhængigt af parentId værdien. Group_id feltet bruges til at gruppere og lave en total optælling. Sidste trin er at gruppere på total_count.

Når du bruger mongoDb 3.4, kan du tjekke $graphLookup men indtil videre forlader jeg dig med pre 3.4-sammenlægningen;-)




  1. Find dokumenter efter række af DBRefs

  2. Konverterer en mongo-lagret dato tilbage til millisekunder siden Unix-epoken, når den blev indlæst?

  3. Mongoose, sorter forespørgsel efter udfyldt felt

  4. Mongoose:Sorter efter indlejret felt