Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- db.getCollection('products').aggregate([
- {$match : {"_id": ObjectId("5c4a08a1fdb8bb16d8afecdf")}},
- {$unwind: "$items"},
- {$unwind: "$items.modules"},
- {$unwind : "$items.modules.subjects"},
- {$group : {
- _id : "$items.modules.subjects",
- "modules": {$addToSet : "$items.modules"}
- }
- }
- ])
- // GOlang code
- +type CourseSubjects struct{
- + SubjectId bson.ObjectId `bson:"_id" json:"subject_id"`
- + Modules []models.ProductModule `bson:"modules" json:"modules"`
- + SubjectName string `bson:"name" json:"name"`
- +}
- +
- func GetClassFilters(classId bson.ObjectId) (map[string]int, error) {
- // TODO: Get from redis if cached
- filtersMap := make(map[string]int)
- @@ -52,3 +61,27 @@ func GetClassFilters(classId bson.ObjectId) (map[string]int, error) {
- return filtersMap, nil
- }
- +
- +
- +// Function to get subjects from subjects tagged in module
- +func GetSubjectFilters(classId bson.ObjectId) ([]CourseSubjects, error){
- + keyModules := strings.Join([]string{models.KEY_PRODUCT_ITEMS, models.KEY_PRODUCT_ITEM_MODULES}, ",")
- + keyModulesSubjects := strings.Join([]string{models.KEY_PRODUCT_ITEMS, models.KEY_PRODUCT_ITEM_MODULES, models.KEY_MODULE_SUBJECTS}, ",")
- + pipe := []bson.M{
- + bson.M{mongo.MONGO_KEYWORD_MATCH: bson.M{models.KEY_PRODUCT_ID: classId}},
- + bson.M{mongo.MONGO_KEYWORD_UNWIND : models.KEY_PRODUCT_ITEMS},
- + bson.M{mongo.MONGO_KEYWORD_UNWIND: keyModules},
- + bson.M{mongo.MONGO_KEYWORD_UNWIND: keyModulesSubjects},
- + bson.M{
- + mongo.MONGO_KEYWORD_GROUP: bson.M{
- + mongo.MONGO_KEY_ID: keyModulesSubjects,
- + "modules": bson.M{mongo.MONGO_KEYWORD_ADDTOSET: mongo.MONGO_KEY_VAR_PREFIX + keyModules},
- + },
- + },
- + }
- +
- + productsCol := models.GetProductCollection()
- + var result []CourseSubjects
- + err := mongowrapper.PipeAllDoc(productsCol, pipe, &result)
- + return result, err
- +}
Advertisement
Add Comment
Please, Sign In to add comment