nickzuck_007

Get subject modules

May 24th, 2019
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 2.11 KB | None | 0 0
  1. db.getCollection('products').aggregate([
  2.     {$match : {"_id": ObjectId("5c4a08a1fdb8bb16d8afecdf")}},
  3.     {$unwind: "$items"},
  4.     {$unwind: "$items.modules"},
  5.     {$unwind : "$items.modules.subjects"},
  6.     {$group :  {
  7.             _id : "$items.modules.subjects",
  8.             "modules": {$addToSet : "$items.modules"}
  9.         }    
  10.     }
  11.  
  12. ])
  13.  
  14.  
  15.  
  16. // GOlang code
  17. +type CourseSubjects struct{
  18. +       SubjectId bson.ObjectId `bson:"_id" json:"subject_id"`
  19. +       Modules []models.ProductModule `bson:"modules" json:"modules"`
  20. +       SubjectName string `bson:"name" json:"name"`
  21. +}
  22. +
  23.  func GetClassFilters(classId bson.ObjectId) (map[string]int, error) {
  24.         // TODO: Get from redis if cached
  25.         filtersMap := make(map[string]int)
  26. @@ -52,3 +61,27 @@ func GetClassFilters(classId bson.ObjectId) (map[string]int, error) {
  27.  
  28.         return filtersMap, nil
  29.  }
  30. +
  31. +
  32. +// Function to get subjects from subjects tagged in module
  33. +func GetSubjectFilters(classId bson.ObjectId) ([]CourseSubjects, error){
  34. +       keyModules := strings.Join([]string{models.KEY_PRODUCT_ITEMS, models.KEY_PRODUCT_ITEM_MODULES}, ",")
  35. +       keyModulesSubjects := strings.Join([]string{models.KEY_PRODUCT_ITEMS, models.KEY_PRODUCT_ITEM_MODULES, models.KEY_MODULE_SUBJECTS}, ",")
  36. +       pipe := []bson.M{
  37. +               bson.M{mongo.MONGO_KEYWORD_MATCH: bson.M{models.KEY_PRODUCT_ID: classId}},
  38. +               bson.M{mongo.MONGO_KEYWORD_UNWIND : models.KEY_PRODUCT_ITEMS},
  39. +               bson.M{mongo.MONGO_KEYWORD_UNWIND: keyModules},
  40. +               bson.M{mongo.MONGO_KEYWORD_UNWIND: keyModulesSubjects},
  41. +               bson.M{
  42. +                       mongo.MONGO_KEYWORD_GROUP: bson.M{
  43. +                               mongo.MONGO_KEY_ID: keyModulesSubjects,
  44. +                               "modules": bson.M{mongo.MONGO_KEYWORD_ADDTOSET: mongo.MONGO_KEY_VAR_PREFIX + keyModules},
  45. +                       },
  46. +               },
  47. +       }
  48. +
  49. +       productsCol := models.GetProductCollection()
  50. +       var result []CourseSubjects
  51. +       err := mongowrapper.PipeAllDoc(productsCol, pipe, &result)
  52. +       return result, err
  53. +}
Advertisement
Add Comment
Please, Sign In to add comment