2016-04-09 18 views
1

私はgolangとmongodbを使用しています。golangの条件付き集計クエリ

[{"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 
     }] 

と私の条件は以下の

college_id,stream,semester,section,subject,startingdate and enddate 
次のようになります。

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

は、私は、オブジェクトのようなの配列として割合で各学生のレポートを取得したい - 私attendanceコレクションは、次のようになります

+2

何を試しましたか、何がうまくいかないのですか?これまでのところ、あなた自身で問題を解決するための努力をしなくても、MongoDBのクエリを書いてコードを最初から作成する人を探しているようです。申し訳ありませんが、SOはあなたのために仕事をする無料のサービスではありません。 –

+0

いくつかのコードを書いて、質問を更新するために戻ってきてください。 – eduncan911

+0

私はこの質問を "私のためのコードを書く"のように思われるので、議論の対象外としています。 – BanksySan

答えて

1

bson.M {"$ group":bson.M {"_ id":{"rollno":bson.M {"$ atndnc.rollno"}}}この行のiそのエラーが発生しています

これは、間違ったbson.Mの使用が原因です。文字列(単一値)の場合は、bsonマップを作成する必要はありません。だから、あなたがそれを更新することができます:

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

ゴーであなたのアグリゲーションパイプラインの同等は以下の通りです:

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"}}, 
     } 

私は例と参照用MongoDB mgo driver pageをチェックアウトすることをお勧めします。

+0

エラーは '' _id 'の後に 'bson.M'の不足が原因です。 '。あなたは正しいですが、彼らはその文字列で追加のエラーが発生したでしょう。あなたのコメントに基づいて調整された – user161778

+0

@ user161778 –