sql >> Database >  >> NoSQL >> MongoDB

Zoek verschillende waarden groep door een ander veld mongodb

je moet een geaggregeerde pijplijn schrijven

  • $match - filter de documenten op criteria
  • $group - groepeer de documenten op sleutelveld
  • $addToSet - verzamel de unieke elementen
  • $project - projecteer in het gewenste formaat
  • $reduce - verklein de array van array naar array met $concatArrays

geaggregeerde zoekopdracht

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()

resultaat

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

je kunt $sort . toevoegen door page_id pijpleiding indien nodig




  1. Voer javascript-script (.js-bestand) uit in mongodb, inclusief een ander bestand in js

  2. Hoe de volgende mongo-opzoekquery in Yii2 te schrijven?

  3. Is het mogelijk om efficiënt te sorteren, groeperen en beperken in Mongo met een pijplijn?

  4. Geospatiale index voor binnenstructuur