2016-11-08 5 views
0

Ich bin neu mit MongoDB.
Ich habe eine Sammlung von Dokumenten wie folgt aus:mongodb Leistungsproblem beim Abrufen von Facetten zählen und Daten

{ 
    "_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 
} 

Ich muss die Daten aus dieser db mit Facettenzahl finden.
Benötigen Sie für folgende Felder zählen Facette

  • 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, Geschick

Und Gesamtanzahl der Übereinstimmungen und Daten mit Grenzwert

Ich habe separate Abfrage für jede Facette und eine Abfrage für die Gesamtanzahl und eine Abfrage für die Daten
Insgesamt 9 + 1 + 1 = 11 querys

Abfrage sind

Facette Abfrage für job_details.status und job_details .label_name und job_details.contact_viwed_status tat wie diese

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 }} } 
    ]) 

anderen 6 Facette Abfrage wie diese

db.Response.aggregate([ {"$and":[{"job_details.owner_id" : 428},{"job_details.owner_type" : 'searches'}]}, 
       {"$group": {"_id":"$candidate_city_name_string","count": {"$sum": 1 }}}]) 

Abfrage für das Sammeln von Daten

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

Abfrage für

db.Response.find({"$and":[{"job_details.owner_id" : 428},{"job_details.owner_type" : 'searches'}]}).count() 

Insgesamt 3 + 9 + 1 + 1 = 11 Gesamtzahl sammeln Querys So Leistung ist sehr sehr niedrig . Ist es möglich, diese 11 Abfrage auf einzelne Abfrage oder wie kann ich die Leistung verbessern.
bitte helfen.

+0

Fragen Sie nach $ Facette? (https://jira.mongodb.org/browse/SERVER-23654) –

+0

ja. Ich brauche Facettenzählung, Gesamtanzahl und Daten – SuFi

+0

wenn ich $ fecet agot den Fehler verwende. Unbekannter Name der Pipelinestufe: '$ facet', – SuFi

Antwort

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}}}] 
     }}]) 
Verwandte Themen