2016-11-08 24 views
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 
} 

私は、ファセット・カウントと、このDBからデータを見つける必要があります。
次のフィールド

  • job_details.status、job_details.label_name、 job_details.contact_viwed_status、candidate_city_name_string、
    COURSE_NAME、hq_passout_year、BRANCH_NAME、 candidate_sublocation_name_string、スキル

のためのファセット・カウントを必要とし、総一致数と制限付きデータ

Iやった個別の各ファセットのクエリと合計カウントのための1つのクエリおよびデータ
のための1つのクエリの合計9 + 1 + 1 = 11のquerys job_details.statusとjob_detailsため

クエリのですが

ファセットクエリの.label_nameとjob_details.contact_viwed_statusこの

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.find({"$and":[{"job_details.owner_id" : 428},{"job_details.owner_type" : 'searches'}]}).count() 

合計3 + 9 + 1 + 1 = 11 Querys 合計カウントを収集するため

db.Response.aggregate([ 
       {"$and":[{"job_details.owner_id" : 428}{"job_details.owner_type" : 'searches'}]}, 
       {"$limit":25},`` 
       { "$skip":0} , 
       {"$unwind":"$job_details"}]) 

クエリはだから性能が非常に非常に低いデータを収集するための

クエリ。この11のクエリを単一のクエリにすることは可能ですか、どのようにしてパフォーマンスを向上させることができますか?
助けてください。

+0

あなたは$ facetを求めていますか? (https://jira.mongodb.org/browse/SERVER-23654) –

+0

はい。私はファセットカウント、合計カウントとデータ – SuFi

+0

が必要です。私は$ fecetを使ってエラーを表示します。認識されないパイプラインステージ名: '$ facet'、 – SuFi

答えて

0
db.Response.aggregate([ 
{"$match":{"$and":[{"job_details.owner_id" : 482},{"job_details.owner_type" : 'searches'}]}}, 
{$facet: { 
    "status": [ 
        {"$unwind": "$job_details" }, 
        {"$group": {"_id":"$job_details.status","count": {"$sum": 1 }} } 
       ], 
    "label_name": [ 
        {"$unwind": "$job_details" }, 
        {"$unwind": "$job_details.label_name" }, 
        {"$group": {"_id":"$job_details.label_name","count": {"$sum": 1 }} } 
        ] , 
    "contact_viwed_status": [ 
        {"$unwind": "$job_details" }, 
        {"$group": {"_id":"$job_details.contact_viwed_status","count": {"$sum": 1 }} } 
        ], 
    "questionnaire_status": [ 
        {"$unwind": "$job_details" }, 
        {"$group": {"_id":"$job_details.questionnaire_status","count": {"$sum": 1 }} } 
        ], 
    "candidate_city_name_string": [ 
         {"$group": {"_id":"$candidate_city_name_string","count": {"$sum": 1 }}} 
         ], 
    "course_name": [ 
         {"$group": {"_id":"$course_name","count": {"$sum": 1 }}} 
         ], 
    "hq_passout_year": [ 
         {"$group": {"_id":"$hq_passout_year","count": {"$sum": 1 }}} 
         ], 
    "branch_name": [ 
         {"$group": {"_id":"$branch_name","count": {"$sum": 1 }}} 
         ], 
    "candidate_sublocation_name_string": [ 
         {"$group": {"_id":"$candidate_sublocation_name_string","count": {"$sum": 1 }}} 
         ], 
    "skill": [ 
         {"$group": {"_id":"$skill","count": {"$sum": 1 }}} 
         ], 
    "doc": [ 
        {"$limit":25}, 
        {"$skip":0}, 
        {"$unwind":"$job_details"}], 
    "total_count":[ 
        {"$group":{"_id": "null", "count":{"$sum":1}}}] 
     }}]) 
関連する問題