func (ctx *DBCtx) CatTree(root bson.ObjectId) []Catergory { all := []Catergory{} var query *mgo.Query if root.Valid() { query = ctx.catColl.Find(bson.M{"ancestors": root}) } else { query = ctx.catColl.Find(bson.M{"parent": bson.M{"$exists": false}}) } query.All(&all) return all }