2017-02-16 10 views
0

I持って次のMongoDBのドキュメント:MongoDB文書を照会してサブ文書配列にグループ化することは可能ですか?

{ 
    "_id" : ObjectId("58950c9c247430c8d9f3997c"), 
    "stamp_dt" : ISODate("2015-10-15T00:09:00.000+0000"), 
    "start_lat" : 52.49512579479001, 
    "asimId" : ObjectId("588fbe3b835262b7f5ede6f5") 
} 
{ 
    "_id" : ObjectId("58950c9c247430c8d9f3997d"), 
    "stamp_dt" : ISODate("2015-10-15T00:09:00.000+0000"), 
    "start_lat" : 52.48510698285751, 
    "asimId" : ObjectId("588fbe3b835262b7f5ede6f5") 
} 
{ 
    "_id" : ObjectId("58950c9c247430c8d9f3997e"), 
    "stamp_dt" : ISODate("2015-10-15T00:09:00.000+0000"), 
    "start_lat" : 52.49966542235, 
    "asimId" : ObjectId("588fbe3b835262b7f5ede6f5") 
} 
{ 
    "_id" : ObjectId("58950c9c247430c8d9f3997f"), 
    "stamp_dt" : ISODate("2015-10-15T00:09:00.000+0000"), 
    "start_lat" : 52.52645820975653, 
    "asimId" : ObjectId("588fbe3b835262b7f5ede6f5") 
} 

お知らせすべてがstamp_dtに対して同じ値を持っています。私はこの使用してコードを実行する可能性があり

{ 
    "stamp_dt" : ISODate("2015-10-15T00:09:00.000+0000"), 
    "results": [ 
     { 
      "_id" : ObjectId("58950c9c247430c8d9f3997c"), 
      "start_lat" : 52.49512579479001, 
      "asimId" : ObjectId("588fbe3b835262b7f5ede6f5") 
     } 
     { 
      "_id" : ObjectId("58950c9c247430c8d9f3997d"), 
      "start_lat" : 52.48510698285751, 
      "asimId" : ObjectId("588fbe3b835262b7f5ede6f5") 
     } 
     { 
      "_id" : ObjectId("58950c9c247430c8d9f3997e"), 
      "start_lat" : 52.49966542235, 
      "asimId" : ObjectId("588fbe3b835262b7f5ede6f5") 
     } 
     { 
      "_id" : ObjectId("58950c9c247430c8d9f3997f"), 
      "start_lat" : 52.52645820975653, 
      "asimId" : ObjectId("588fbe3b835262b7f5ede6f5") 
     } 
    ] 
} 

が、MongoDBのクエリ(おそらく集合)を介してそうする方法があります:私はこのようなこれらの文書をグループ化する方法がありますか?

+1

にクエリを簡素化することができます。 'db.collection.aggregate( \t [{ \t \t $基:{ \t \t \t _id: "$のstamp_dt"、 \t \t \t "結果":{ \t \t \t \t $プッシュ:{ \t \t \t \t \t _id: "$の_id"、 \t \t \t \t \t start_lat: "$のstart_lat"、 \t \t \t \t \t asimId = "$ asimId" \t \t \t \t} \t \t \t} \t \t} \t}] ) ' – Veeram

+0

ありがとうございました!それはうまくいった。それを回答として掲示したいなら、私はそれを回答としてマークし、あなたに信用を与えます。 –

答えて

1

以下のように試すことができます。

db.collection.aggregate(
    [{ 
     $group: { 
      _id: "$stamp_dt", 
      "data": { 
       $push: { 
        _id: "$_id", 
        start_lat: "$start_lat", 
        asimId: "$asimId" 
       } 
      } 
     } 
    }] 
) 

、あなたは配列にstamp_dtを気にしないならば、あなたはこのような何かを試すことができ

db.collection.aggregate(
    [{ 
     $group: { 
      _id: "$stamp_dt", 
      "data": { 
       $push: "$$ROOT" 
      } 
     } 
    }] 
) 
+0

素晴らしい!第二のものは特に優れています。あなたの助けをもう一度ありがとう。 –

関連する問題