2017-06-15 70 views
0

我試圖執行以下分貝蒙戈命令:mongodb的聚合格式結果

db.getCollection('fxh').aggregate([ { $unwind : "$pf.acc"}, {$match : {"username" : "user1", "pf.acc.accnbr" : 915177}}, { $unwind : "$pf.acc.cyc"}, {$match : {"pf.acc.cyc.name": "QPT192017"}}, {$project : {_id:0, det : "$pf.acc.cyc.det"}} ]) 

從以下JSON提取:

"pf" : [ 
     { 
     "acc" : [ 
      { 
       "cyc" : [ 
        { 
         "cyc" : 1497457700, 
         "name" : "QPT192017", 
         "description" : "Quaterly Private Test", 
         "startdate" : "2017-05-10T16:28", 
         "enddate" : "2017-08-08T16:28", 
         "age" : 90, 
         "target" : 2, 
         "status" : "Closed", 
         "active" : true, 
         "det" : [ 
          { 
           "dcycid" : 1497457701, 
           "status" : "New", 
           "age" : 0, 
           "progress" : 0, 
           "createDate" : "2017-06-14T16:28" 
          }, 
          { 
           "dcycid" : 12345678.0, 
           "status" : "Start", 
           "age" : 10.0, 
           "progress" : 0.0, 
          }, 
          { 
           "dcycid" : 12345679.0, 
           "status" : "Running", 
           "age" : 100.0, 
           "progress" : 5.0, 

          }, 
          { 
           "dcycid" : 12345680.0, 
           "status" : "Running", 
           "age" : 500.0, 
           "progress" : 15.0, 

          }, 
          { 
           "dcycid" : 12345681.0, 
           "status" : "Running", 
           "age" : 1500.0, 
           "progress" : 35.0, 

          }, 
          { 
           "dcycid" : 12345682.0, 
           "status" : "Running", 
           "age" : 51500.0, 
           "progress" : 85.0, 

          }, 
          { 
           "dcycid" : 12345683.0, 
           "status" : "Running", 
           "age" : 58500.0, 
           "progress" : 103.0, 

          }, 
          { 
           "dcycid" : 12345684.0, 
           "status" : "Closed", 
           "age" : 58500.0, 
           "progress" : 103.0, 

          } 
         ] 
        } 
       ] 
      } 
     ], 
     "active" : true, 
     "pfid" : 1496513935 
    } 

和命令的結果如下:

[ 
    { 
     "det" : [ 
      { 
       "dcycid" : 1497457701, 
       "status" : "New", 
       "age" : 0, 
       "progress" : 0, 
       "createDate" : "2017-06-14T16:28" 
      }, 
      { 
       "dcycid" : 12345678.0, 
       "status" : "Start", 
       "age" : 10.0, 
       "progress" : 0.0, 
      }, 
      { 
       "dcycid" : 12345679.0, 
       "status" : "Running", 
       "age" : 100.0, 
       "progress" : 5.0, 
      }, 
      { 
       "dcycid" : 12345680.0, 
       "status" : "Running", 
       "age" : 500.0, 
       "progress" : 15.0, 
      }, 
      { 
       "dcycid" : 12345681.0, 
       "status" : "Running", 
       "age" : 1500.0, 
       "progress" : 35.0, 
      }, 
      { 
       "dcycid" : 12345682.0, 
       "status" : "Running", 
       "age" : 51500.0, 
       "progress" : 85.0, 
      }, 
      { 
       "dcycid" : 12345683.0, 
       "status" : "Running", 
       "age" : 58500.0, 
       "progress" : 103.0, 
      }, 
      { 
       "dcycid" : 12345684.0, 
       "status" : "Closed", 
       "age" : 58500.0, 
       "progress" : 103.0, 
      } 
     ] 
    } 
] 

這是我的問題,我只需要得到'det'部分

"det" : [ 
{.....}, 
{.....}, 
{.....} 
] 

任何想法如何適應我的mongo命令獲得所需的結果?

回答

0

初始查詢是:

db.getCollection('fxh').aggregate([ { $unwind : "$pf.acc"}, {$match : {"username" : "user1", "pf.acc.accnbr" : 915177}}, { $unwind : "$pf.acc.cyc"}, {$match : {"pf.acc.cyc.name": "QPT192017"}}, {$project : {_id:0, det : "$pf.acc.cyc.det"}} ]) 

的「DET」投影本身是一個數組,在我運行通過specifiying對象名稱下面的代替給什麼我正在尋找更多/更少準確:

例如:db.getCollection('fxh').aggregate([ { $unwind : "$pf.acc"}, {$match : {"username" : "user1", "pf.acc.accnbr" : 915177}}, { $unwind : "$pf.acc.cyc"}, {$match : {"pf.acc.cyc.name": "QPT192017"}}, {$project : {_id:0, det : "$pf.acc.cyc.det.dcycid"}} ])