2017-06-10 13 views
0

一般的なジオロケーション情報を持つドキュメントがあります。私はトップx都市を手に入れようとしています。mongodb:ドキュメントの上位x個の順位を取得する

{ 
    "_id" : ObjectId("593b6a7068c4281a3f7702c5"), 
    "clientID" : "1000000000", 
    "session_id" : "I9Ak2k1taOGHU0Z0000000000", 
    "location" : { 
     "country" : "United States", 
     "city" : "Seattle", 
     "postal" : "98105", 
     "traits" : null, 
     "local" : "America/Los_Angeles" 
    }, 
    "dateTime" : ISODate("2017-06-09T21:12:56.819+0000"), 
    "action" : "PLAY",.... 
} 

私はかなりmongo、SQLから来て新しくなっています。私はこれを返す文書の範囲を取得した後、コードでそれを行うことなく、&集計を使用して行うことを望んでいた。

私はこれらのドキュメントをsession_idでグループ化する方法を理解しました。これで降順でソートされた都市数のインスタンスを追加し、それらの都市を表示するだけです。

私のグループクエリ:任意の洞察力のための

db.Playerstats.aggregate(

    // Pipeline 
    [ 
     // Stage 1 for tests 
     { 
      $match: { 
       clientID: "1000000000" 
      } 
     }, 

     // Stage 2 
     { 
      $group: { 
       _id : "$session_id", 
       start: { $first: "$dateTime"}, 
       stop: { $last: "$dateTime"}, 
       eventID : { $addToSet: "$eventID"}, 
       status : { $addToSet: "$eventStatus"}, 
       browser: { $addToSet: "$browser.userAgent"}, 
       OS : { $addToSet: "$browser.platform"}, 
       city : { $addToSet: "location.city"}, 
       p2pData : { $sum: "$p2p.totalVerifiedBytes"}, 
       actions : { $addToSet: "$action"} 
      } 
     }, 

     // Stage 3 
     { 
      $sort: { 
       startDate: -1 
      } 
     }, 
    ], 
); 

感謝。

+0

何を試しましたか?問題には何も試みられていないことは何もありません。あなたが試してみたら、あなたが理解していない部分であなたを導くことができます。しかし、そこにはたくさんの例があります。 { \t \t \t \t _id:[集計マッピングチャートにSQL](https://docs.mongodb.com/manual/reference/sql-aggregation-comparison/) –

+0

Iは{ \t \t \t $基を試みました。 { \t \t \t CUST_ID: "$市"、 \t \t \t数:{???} \t \t \t} \t \t \t} \t \t}、 私の質問のステージ3の後に投稿しました。 {_id \t \t \t \t: "$市"、 \t \t \t数:{$合計:1} が、私はグループ化 – user978791

+0

からこれらの数を合計する方法として失われていますが.. $グループをそれを考え出しました\t \t \t \t \t \t ちょうどそれが間違っていた。 TY – user978791

答えて

0

都市のクエリに別のグループを追加し、そのカウントを取得するだけでした。今私はそれを整理するために限界とソートを追加することができます。

{ 
    $group: { 
    _id: "$city", 
    count: { $sum: 1 }    
    } 
} 
関連する問題