2016-06-01 18 views
1

これは、1つのmonggodbコレクションにあるドキュメントの構造です。 キー "コード"と、入れ子になったjsonのインデックス位置のグループ化されたカウントのmongo集計をどのように行うことができるかを理解したかったのです。列とインデックス位置でグループ化されたカウントmongodb

{                                 
     "_id" : ObjectId("5749e9fde4b0064e7362b560"),                    
     "_class" : "com.weirdcompanyname.core.collectionname",                
     "rfId" : 1,                             
     "scheduleds" : [                           
       {                             
         "code" : "556e4835f1eae40bdfa2f2001f2afc76",                
         "type" : "HT",                        
         "priority" : 0                        
       },                             
       {                             
         "code" : "8b2ab67af4f60e42f7ea64813b5795cf",                
         "type" : "HT",                        
         "priority" : 1                        
       },                             
       {                             
         "code" : "ed17101eb918b4d8c7c598e4884523ea",                
         "type" : "HT",                        
         "priority" : 2                        
       },                             
       {                             
         "code" : "7e0ffb4db",                      
         "type" : "QZ",                        
         "priority" : 3                        
       },                             
       {                             
         "code" : "1453dfa1794f39b05f0259ad04699073",                
         "type" : "HT",                        
         "priority" : 4                        
       }                             
     ],                               
     "created" : ISODate("2016-05-28T18:57:00.878Z")                    
} 

私は見つけようとしている結果は次のとおりです。

code index_position count 
556e4835f1eae40bdfa2f2001f2afc76 0 100 
8b2ab67af4f60e42f7ea64813b5795cf 1 100 
ed17101eb918b4d8c7c598e4884523ea 2 100 
7e0ffb4db 3 100 
1453dfa1794f39b05f0259ad04699073 4 100 

私は聞かせての、単一のアレイにネストされたJSONを巻き戻し、その後、コードと、おそらく他の列の上にコードをグループ化するのまわりで私の頭を得ることができます優先順位とカウントを持っているが、問題はインデックスの位置を取得することです。

これはmongoでも可能ですか?私はそれについてたくさんのことを読んだことがあります。私はポジションが必要な価値があると考えましたが、それは実行可能ですが、本当に価値がありません私が探しているのは、それぞれのコードと "スケジュールされた"数とそのインデックス位置です。 は、これは私が私の限らモンゴ照会スキルで何ができるかである:配列インデックスの巻き戻し

db.collectionname.aggregate([{'$match':{'date_key':{'$gte': yesterday_beginning, '$lte': yesterday_end}}}, {'$unwind':'$scheduleds'}, {'$group':{'_id':{'code':'$scheduleds.code','priority':'$scheduleds.priority'}, 'rfid':{'$addToSet':'$rfId'}}}, {'$project':{'_id':0, 'code':'$_id.code', 'priority':'$_id.priority', 'totalRfid':{'$size':'$rfid'}}}, { $limit : 1000 }],{ allowDiskUse:true}) 

答えて

0

Alain1405says hereのMongoDB 3.2をサポート。

は、代わりにパスを$unwindオペレータを渡すのは、 は、配列のインデックスを保持するフィールドパスとフィールドincludeArrayIndexで オブジェクトを渡すことができます。 MongoDB official documentationから

{ 
    $unwind: 
    { 
    path: <field path>, 
    includeArrayIndex: <string>, 
    preserveNullAndEmptyArrays: <boolean> 
    } 
} 
関連する問題