Как повысить производительность mongodb
Я новичок в использовании MongoDB.
У меня есть коллекция таких документов:
{ "_id" : ObjectId("58204f60536d1a27736d512b"), "last_name" : "Vinaykumar", "university_name" : "Osmania University", "job_483" : 1, "xiith_mark" : 0, "id" : "3305775", "first_name" : "V", "course_name" : "Diploma", "institute_name_string" : "Govt.Polytechnic,Kothagudem", "profile_percentage" : 60, "xiith_mark_type" : "Percentage", "xth_mark_type" : "Percentage", "date_of_birth" : "11-March-1995", "xth_mark" : 0, "last_login" : 1379565790, "percentage" : 76, "job_details" : [ { "status" : NumberLong(0), "applied_date" : NumberLong(1476703354), "contact_viwed_status" : 0, "label_name" : [ ], "questionnaire_status" : 0, "batch_id" : null, "owner_type" : "searches", "call_letter" : null, "owner_id" : NumberLong(465) }, { "status" : NumberLong(0), "applied_date" : NumberLong(1477051963), "contact_viwed_status" : 0, "label_name" : [ ], "questionnaire_status" : 0, "batch_id" : null, "owner_type" : "searches", "call_letter" : null, "owner_id" : NumberLong(482) }, { "status" : NumberLong(0), "applied_date" : NumberLong(1477052973), "contact_viwed_status" : 0, "label_name" : [ ], "questionnaire_status" : 0, "batch_id" : null, "owner_type" : "searches", "call_letter" : null, "owner_id" : NumberLong(483) } ], "branch_name" : "Electrical & Electronics", "candidate_state_name" : "Andhra Pradesh", "candidate_city_name_string" : "Andhra Pradesh-other", "10" : 10, "12" : 12, "gender" : "Male", "fw_id" : "FW15651132", "cgpa" : 0, "picture_path" : "", "hq_passout_year" : 2013 },
..........
.............
Мне нужно найти данные из этой базы данных с подсчетом фасетов .
**Требуется подсчет фасетов для следующих полей**
1.job_details.статус
2.job_details.имя метки
3.job_details.contact_viwed_status
4.candidate_city_name_string
5.course_name
6.hq_passout_year
7.branch_name
8.candidate_sublocation_name_string
9.навык
И общее количество совпадений и данные с ограничением
Я сделал отдельный запрос для каждого аспекта и один запрос для общего количества и один запрос для данных
Итого 9+1+1=11 запросов
** Запросы являются**
Что я уже пробовал:
Запросы таковы
запрос фасета для job_details. status и job_details.label_name и job_details.contact_viwed_status сделал такой
<pre lang="Python">
db.Response.aggregate([ {"$match":{"$and":[{"job_details.owner_id" : 428}, {"job_details.owner_type" : 'searches'}]}}, {"$unwind": "$job_details" }, {"$group": {"_id":"$job_details.status","count": {"$sum": 1 }} } ])
другой 6 фасетный запрос выглядит следующим образом
db.Response.aggregate([ {"$and":[{"job_details.owner_id" : 428},{"job_details.owner_type" : 'searches'}]}, {"$group": {"_id":"$candidate_city_name_string","count": {"$sum": 1 }}}] )
** запрос для сбора данных**
db.Response.aggregate([ {"$and":[{"job_details.owner_id" : 428}{"job_details.owner_type" : 'searches'}]}, {"$limit":25},`` { "$skip":0} , {"$unwind":"$job_details"}])
запрос для сбора общего количества
<pre>db.Response.find({"$and":[{"job_details.owner_id" : 428},{"job_details.owner_type" : 'searches'}]}).count()
Итого 3+9+1+1=11 Запросов
Так что производительность очень и очень низкая . Можно ли сделать этот 11 api для "ввода кода здесь" одним api или как я могу улучшить производительность.
пожалуйста помочь.