2017-04-19 18 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」を抽出したいと思います。 3つのコレクションのそれぞれの結果は同じでなければなりません。予想される出力は次のようになります。

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

あなたは、コレクションごとに集計クエリの下に試すことができ、あなたの技術的な専門知識

+0

のような応答を得るために、すべてのコレクションのためのdb.collectionname.distinct("field_1.field_11")を使用することができますか? – 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"}}); 

また、あなたは正確に出力として期待していないものを

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

ありがとうございましたVeeram –

関連する問題