2016-04-09 14 views
1

Ich verwende Golang und Mongodb. meine attendance Sammlung wie folgt aussieht -bedingte Aggregat Abfrage in Golang

{ 
    "_id" : ObjectId("5708156b51230e8edcb01fd1"), 
    "college_id" : "tisl", 
    "stream" : "CS", 
    "semester" : "sem3", 
    "section" : "A", 
    "subject" : "PH301", 
    "date" : ISODate("2016-04-08T20:32:42.547Z"), 
    "teacher" : "Chandra Kanta Bhattacharya", 
    "atndnc" : [ 
     { 
      "rollno" : "13000112115", 
      "name" : "Md Hossain Ahamed", 
      "attend" : true 
     }, 
     { 
      "rollno" : "13000112116", 
      "name" : "Md Sajid Tagala", 
      "attend" : true 
     }, 
     { 
      "rollno" : "13000112117", 
      "name" : "Nabarun Roy", 
      "attend" : false 
     }, 
     { 
      "rollno" : "13000112118", 
      "name" : "Nikunj Mundra", 
      "attend" : true 
     } 
    ] 
} 

I Bericht für jeden Schüler in Prozent erhalten möge als ein Array von Objekt wie:

[{"rollno" : "13000112115", 
      "name" : "Md Hossain Ahamed", 
      "prcntg" : 80}, 
     { 
      "rollno" : "13000112116", 
      "name" : "Md Sajid Tagala", 
      "prcntg" : 60 
     }, 
     { 
      "rollno" : "13000112117", 
      "name" : "Nabarun Roy", 
      "prcntg" : 90 
     }, 
     { 
      "rollno" : "13000112118", 
      "name" : "Nikunj Mundra", 
      "prcntg" : 65 
     }] 

und meine Bedingungen werden die folgenden

college_id,stream,semester,section,subject,startingdate and enddate 
seine
+2

Was haben Sie versucht und was läuft schief? Bis jetzt scheint es, als ob Sie jemanden suchen, der MongoDB Query schreibt und Code von Grund auf neu erstellt, ohne jegliche Anstrengung, um das Problem selbst zu lösen. Tut mir leid, aber SO ist kein kostenloser Service, um die Arbeit für Sie zu erledigen. –

+0

Gehen Sie etwas Code schreiben und kommen Sie zurück, um Ihre Frage zu aktualisieren. – eduncan911

+0

Ich stimme für das Schließen dieser Frage als Off-Topic ab, da es sich um eine Frage "Code schreiben für mich" handelt. – BanksySan

Antwort

1

bson.M {"$ gruppe": bson.M {"_ id": {"rollno": bson.M {"$ andnc.rollno"}}}} in dieser Zeile i bekomme ich diesen Fehler

Dies ist aufgrund der falschen bson.M Verwendung. Sie müssen keine Bson-Map erstellen, wenn es sich um eine Zeichenfolge (einzelner Wert) handelt. So könnten Sie aktualisieren, zu:

bson.M{"$group": 
    bson.M{"_id": bson.M{"rollno":"$atndnc.rollno"}} 
} 

Die äquivalent Ihre Aggregation Pipeline in Go unten:

pipeline := []bson.M{ 
     bson.M{"$match": 
      bson.M{"stream": "CS", "semester":"sem3", "section":"A"}}, 
     bson.M{"$unwind": "$atndnc"}, 
     bson.M{"$group": 
      bson.M{ "_id": bson.M{"rollno":"$atndnc.rollno", "name":"$atndnc.name"},  
        "count":bson.M{"$sum":1}, 
        }, 
     }, 
     bson.M{"$project": 
      bson.M{"_id":"$_id.rollno", "name":"$_id.name", "count":"$count"}}, 
     } 

Ich würde empfehlen, MongoDB mgo driver page für Beispiele und Referenzen zur Kasse.

+0

Ich glaube, der Fehler wurde tatsächlich durch das Fehlen von 'bson.M' nach' "_id" verursacht: '. Sie haben jedoch Recht, sie hätten einen zusätzlichen Fehler mit dieser Zeichenfolge gefunden. – user161778

+0

@ user161778 optimiert basierend auf Ihrem Kommentar. –