Sufaid A Ответов: 0

Как повысить производительность 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 или как я могу улучшить производительность.
пожалуйста помочь.

0 Ответов