sql >> Databasteknik >  >> NoSQL >> MongoDB

Hitta distinkta värdegrupper efter ett annat fält mongodb

du måste skriva en samlad pipeline

  • $match - filtrera dokumenten efter kriterier
  • $group - gruppera dokumenten efter nyckelfält
  • $addToSet - aggregera de unika elementen
  • $project - projekt i det format som krävs
  • $reduce - reducera arrayen av array till array med $concatArrays

samlad fråga

db.tt.aggregate([
    {$match : {"time_broadcast" : "09:13"}}, 
    {$group : {"_id" : "$page_id", "category_list" : {$addToSet : "$category_list"}}}, 
    {$project : {"_id" : 0, "page_id" : "$_id", "category_list" : {$reduce : {input : "$category_list", initialValue : [], in: { $concatArrays : ["$$value", "$$this"] }}}}}
]).pretty()

resultat

{ "page_id" : "123456", "category_list" : [ "news", "updates" ] }
{
        "page_id" : "1234",
        "category_list" : [
                "sport",
                "handball",
                "football",
                "sport"
        ]
}

du kan lägga till $sort av page_id pipeline vid behov




  1. Mongodb-servern startar inte efter att ha ändrat dbpath

  2. Node.js och Mongoose regex-fråga på flera fält

  3. MongoDB-uppdatering. Försöker ställa in ett fält från en egenskap hos en annan

  4. hur man importerar excel-fil (XLSX) till mongoDB