2015-11-30 50 views
-1

我想獲得嵌套數組中每個值的結果數組。巢的深度是可怕的,它是objectRawOriginData.Reports.Rows.Rows.Cells。我不想將此用作論壇的示例,因此我創建了一個更簡單的名稱,其名稱的嵌套值爲columns.row.0.value,值爲columns.row。 1.value

我在下面創建了一個示例,可以幫助解釋我的問題。

我想要得到的是下面的名稱值對的數組:

頭1:值1 頭2:值2

{ 
"_id" : ObjectId("565baae61506995581569437"), 
"objectType" : "Report", 
    "columns" : [ 
    { 
     "rows" : [ 
      { 
       "value" : "header 1" 
      }, 
      { 
       "value" : "value 1" 
      } 
     ] 
    }, 
    { 
     "rows" : [ 
      { 
       "value" : "header 2" 
      }, 
      { 
       "value" : "value 2" 
      } 
     ] 
    } 
] 
} 

我給這個下面去,但是,它的不給我這雙價值觀。我不僅需要將0值設置爲「標題1」,還需要「值1」的位置1值。

db.testing.aggregate( 
    { $match : { objectType: "Report"}}, 
    { $project: {_id: 0, columns: 1, rows:1}}, 
    { $unwind: "$columns" }, 
    { $unwind: "$columns.rows" }, 
    { $match: {"columns.rows.value": "header 1"}}, 
    { $group: {_id: null, columns: { $push: "$columns" }}}, 
    { $project: {_id: 0,columns: 1}} 
    //,{$out : "entity_datapoints"} 
) 

但只是給我:

{ 
"result" : [ 
    { 
     "columns" : [ 
      { 
       "rows" : { 
        "value" : "header 1" 
       } 
      } 
     ] 
    } 
], 
"ok" : 1.0000000000000000 
} 

謝謝,馬特

+0

我編輯了你的問題,所以你的代碼可以看起來更好。 –

+0

謝謝阿里爾,馬特 –

+0

沒問題我的朋友。只要確保閱讀http://stackoverflow.com/help/how-to-ask以避免負面聲譽 –

回答

0

馬特,可惜你不能做到這一點,截至目前。將關鍵名稱作爲另一個字段的值進行投影,在使用聚合的mongoDB中尚不可能。根據這JIRA ticket,它目前是「計劃但沒有計劃」。

我認爲你可以通過做map reduce實現類似的事情。

+0

感謝您的迴應,當我查看地圖減少,我看到的作品存在兩個或更多的價值觀我有一個問題是,我有一個數組中的一個名稱的值,並在同一個數組中的不同集合中的相應值。我知道的一件事是,名稱始終在位置0和該值始終在同一組的位置1處沒有辦法查詢FIND的位置,以便獲取路徑和位置編號,然後使用修改後的路徑檢索特定元素的值?謝謝,Matt –

+0

I認爲我需要使用$ slice獲取位置0,然後再次獲得位置1,也許還包括$ limit和/或$ skip。:)通過一些想法工作但仍然向後走,謝謝 –

相關問題