2017-04-19 162 views
0

鑑於以下三個MongoDB的集合:查詢的MongoDB集合

db.array.insertMany([{ 
    "field_1": [ 
     { 
      "field_11": [{ 
       "field_22": "Left field_23 Far", 
       "field_23": "Right field_23" 
      }], 
      "field_12": [{ 
       "field_22": "Left field_23 Far", 
       "field_23": "Right field_23" 
      }], 
      "field_13": [{ 
       "field_22": "Left field_23 Far", 
       "field_23": "Left field_23" 
      }], 
      "field_14": [{ 
       "field_23": "Left field_23", 
       "field_22": "Left field_23 Far" 
      }] 
     } 
    ] 
}]) 

db.noArray.insertMany([{ 
    "field_1": 
    { 
     "field_11": [{ 
      "field_22": "Left field_23 Far", 
      "field_23": "Right field_23" 
     }], 
     "field_12": [{ 
      "field_22": "Left field_23 Far", 
      "field_23": "Right field_23" 
     }], 
     "field_13": [{ 
      "field_22": "Left field_23 Far", 
      "field_23": "Left field_23", 

     }], 
     "field_14": [{ 
      "field_23": "Left field_23", 
      "field_22": "Left field_23 Far" 
     }] 
    } 
}]) 

db.noArrayArray.insertMany([{ 
    "field_1": 
    { 
     "field_11": { 
      "field_22": "Left field_23 Far", 
      "field_23": "Right field_23" 
     }, 
     "field_12": { 
      "field_22": "Left field_23 Far", 
      "field_23": "Right field_23" 
     }, 
     "field_13": { 
      "field_22": "Left field_23 Far", 
      "field_23": "Left field_23" 
     }, 
     "field_14": { 
      "field_23": "Left field_23", 
      "field_22": "Left field_23 Far" 
     } 
    } 
}]) 

我想單獨查詢每個收集和提取「field_11」。三個集合中每個集合的結果應該是相同的。預期的輸出是:

"field_11": { 
      "field_22": "Left field_23 Far", 
      "field_23": "Right field_23"} 

預先感謝您爲您的技術專長

+0

你想到正是因爲輸出做? – felix

+0

請參閱我的編輯 –

+0

您應該看看MongoDB文檔。太好了。我保證:https://docs.mongodb.com/manual/tutorial/query-documents/ –

回答

1

你可以試試下面聚集查詢每個集合。使用$arrayElemAt將位置的數組字段轉換爲文檔。

db.array.aggregate({$project:{_id:0, field_11:{$arrayElemAt:[{$arrayElemAt:["$field_1.field_11", 0]}, 0]}}}); 

db.noArray.aggregate({$project:{_id:0, field_11:{$arrayElemAt:["$field_1.field_11", 0]}}}); 

db.noArrayArray.aggregate({$project:{_id:0, field_11:"$field_1.field_11"}}); 

您還可以使用db.collectionname.distinct("field_1.field_11")對所有集合得到迴應像下面

[ { "field_22" : "Left field_23 Far", "field_23" : "Right field_23" } ] 
+0

謝謝Veeram –