nickzuck_007

Combo Pack Aggregation

Mar 25th, 2019
446
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.47 KB | None | 0 0
  1.  
  2. func GetComboPackFeedbackData(col string, id bson.ObjectId) ([]ComboFeedbacksData, error) {
  3.  
  4.     var comboFeedbacks []ComboFeedbacksData
  5.     var customQuery mongowrapper.Query
  6.  
  7.     pipeline := []bson.M{
  8.         bson.M{mongo.MONGO_KEYWORD_MATCH: bson.M{KEY_PRODUCT_ID: id}},
  9.         bson.M{mongo.MONGO_KEYWORD_PROJECT: bson.M{"title": 1, "testPacks": "$items"}},
  10.         bson.M{mongo.MONGO_KEYWORD_UNWIND: "$testPacks"},
  11.  
  12.         bson.M{
  13.             mongo.MONGO_KEYWORD_LOOKUP: bson.M{
  14.                 mongo.MONGO_KEYWORD_LOOKUP_FROM:         TBConstants.COLLECTION_PRODUCT_NAME,
  15.                 mongo.MONGO_KEYWORD_LOOKUP_LOCALFIELD:   "testPacks.id",
  16.                 mongo.MONGO_KEYWORD_LOOKUP_FOREIGNFIELD: "_id",
  17.                 mongo.MONGO_KEYWORD_LOOKUP_AS:           "testPack",
  18.             },
  19.         },
  20.         bson.M{mongo.MONGO_KEYWORD_PROJECT: bson.M{"title": 1, "testPack": bson.M{mongo.MONGO_KEYWORD_ARRAYELEMAT: []interface{}{"$testPack", 0}}}},
  21.         bson.M{mongo.MONGO_KEYWORD_UNWIND: "$testPack.items"},
  22.         bson.M{mongo.MONGO_KEYWORD_PROJECT: bson.M{
  23.             "title":      1,
  24.             "testPack":   1,
  25.             "testId":     "$testPack.items.id",
  26.             "testPackId": "$testPack._id",
  27.         },
  28.         },
  29.         bson.M{
  30.             mongo.MONGO_KEYWORD_LOOKUP: bson.M{
  31.                 mongo.MONGO_KEYWORD_LOOKUP_FROM:         TBConstants.COLLECTION_ENTITY_FEEDBACKS_NAME,
  32.                 mongo.MONGO_KEYWORD_LOOKUP_LOCALFIELD:   "testPack.items.id",
  33.                 mongo.MONGO_KEYWORD_LOOKUP_FOREIGNFIELD: "docId",
  34.                 mongo.MONGO_KEYWORD_LOOKUP_AS:           "feedbacks",
  35.             },
  36.         },
  37.         bson.M{mongo.MONGO_KEYWORD_UNWIND: bson.M{
  38.             mongo.MONGO_KEYWORD_UNWIND_PATH:     "$feedbacks",
  39.             mongo.MONGO_KEYWORD_UNWIND_PRESERVE: true,
  40.         },
  41.         },
  42.  
  43.         bson.M{mongo.MONGO_KEYWORD_GROUP: bson.M{
  44.             "_id":           "$testId",
  45.             "title":         bson.M{mongo.MONGO_KEYWORD_FIRST: "$title"},
  46.             "testPackTitle": bson.M{mongo.MONGO_KEYWORD_FIRST: "$testPack.title"},
  47.             "testPackId":    bson.M{mongo.MONGO_KEYWORD_FIRST: "$testPackId"},
  48.             "avgRating":     bson.M{mongo.MONGO_KEYWORD_AVG: "$feedbacks.rating"},
  49.         },
  50.         },
  51.  
  52.         bson.M{mongo.MONGO_KEYWORD_GROUP: bson.M{
  53.             "_id":           "$testPackId",
  54.             "title":         bson.M{mongo.MONGO_KEYWORD_FIRST: "$title"},
  55.             "testPackTitle": bson.M{mongo.MONGO_KEYWORD_FIRST: "$testPackTitle"},
  56.             "testIds":       bson.M{mongo.MONGO_KEYWORD_PUSH: "$_id"},
  57.             "avgRatings":    bson.M{mongo.MONGO_KEYWORD_PUSH: "$avgRating"},
  58.             "tp_avgRating":  bson.M{mongo.MONGO_KEYWORD_AVG: "$avgRating"},
  59.         },
  60.         },
  61.     }
  62.  
  63.     err := customQuery.C(col).Pipe(pipeline).AllowDiskUse().All(&comboFeedbacks)
  64.     return comboFeedbacks, err
  65.  
  66. }
Advertisement
Add Comment
Please, Sign In to add comment