Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func GetComboPackFeedbackData(col string, id bson.ObjectId) ([]ComboFeedbacksData, error) {
- var comboFeedbacks []ComboFeedbacksData
- var customQuery mongowrapper.Query
- pipeline := []bson.M{
- bson.M{mongo.MONGO_KEYWORD_MATCH: bson.M{KEY_PRODUCT_ID: id}},
- bson.M{mongo.MONGO_KEYWORD_PROJECT: bson.M{"title": 1, "testPacks": "$items"}},
- bson.M{mongo.MONGO_KEYWORD_UNWIND: "$testPacks"},
- bson.M{
- mongo.MONGO_KEYWORD_LOOKUP: bson.M{
- mongo.MONGO_KEYWORD_LOOKUP_FROM: TBConstants.COLLECTION_PRODUCT_NAME,
- mongo.MONGO_KEYWORD_LOOKUP_LOCALFIELD: "testPacks.id",
- mongo.MONGO_KEYWORD_LOOKUP_FOREIGNFIELD: "_id",
- mongo.MONGO_KEYWORD_LOOKUP_AS: "testPack",
- },
- },
- bson.M{mongo.MONGO_KEYWORD_PROJECT: bson.M{"title": 1, "testPack": bson.M{mongo.MONGO_KEYWORD_ARRAYELEMAT: []interface{}{"$testPack", 0}}}},
- bson.M{mongo.MONGO_KEYWORD_UNWIND: "$testPack.items"},
- bson.M{mongo.MONGO_KEYWORD_PROJECT: bson.M{
- "title": 1,
- "testPack": 1,
- "testId": "$testPack.items.id",
- "testPackId": "$testPack._id",
- },
- },
- bson.M{
- mongo.MONGO_KEYWORD_LOOKUP: bson.M{
- mongo.MONGO_KEYWORD_LOOKUP_FROM: TBConstants.COLLECTION_ENTITY_FEEDBACKS_NAME,
- mongo.MONGO_KEYWORD_LOOKUP_LOCALFIELD: "testPack.items.id",
- mongo.MONGO_KEYWORD_LOOKUP_FOREIGNFIELD: "docId",
- mongo.MONGO_KEYWORD_LOOKUP_AS: "feedbacks",
- },
- },
- bson.M{mongo.MONGO_KEYWORD_UNWIND: bson.M{
- mongo.MONGO_KEYWORD_UNWIND_PATH: "$feedbacks",
- mongo.MONGO_KEYWORD_UNWIND_PRESERVE: true,
- },
- },
- bson.M{mongo.MONGO_KEYWORD_GROUP: bson.M{
- "_id": "$testId",
- "title": bson.M{mongo.MONGO_KEYWORD_FIRST: "$title"},
- "testPackTitle": bson.M{mongo.MONGO_KEYWORD_FIRST: "$testPack.title"},
- "testPackId": bson.M{mongo.MONGO_KEYWORD_FIRST: "$testPackId"},
- "avgRating": bson.M{mongo.MONGO_KEYWORD_AVG: "$feedbacks.rating"},
- },
- },
- bson.M{mongo.MONGO_KEYWORD_GROUP: bson.M{
- "_id": "$testPackId",
- "title": bson.M{mongo.MONGO_KEYWORD_FIRST: "$title"},
- "testPackTitle": bson.M{mongo.MONGO_KEYWORD_FIRST: "$testPackTitle"},
- "testIds": bson.M{mongo.MONGO_KEYWORD_PUSH: "$_id"},
- "avgRatings": bson.M{mongo.MONGO_KEYWORD_PUSH: "$avgRating"},
- "tp_avgRating": bson.M{mongo.MONGO_KEYWORD_AVG: "$avgRating"},
- },
- },
- }
- err := customQuery.C(col).Pipe(pipeline).AllowDiskUse().All(&comboFeedbacks)
- return comboFeedbacks, err
- }
Advertisement
Add Comment
Please, Sign In to add comment