2016-09-18 9 views
1

私はmongodbコレクションを持っており、そのコレクション内の各ドキュメントには異なるドキュメントタイプの配列が含まれています。配列インデックスに基づいてネストされたドキュメントを取得する

EX:

{ 
    _Id: SomeObjectID, 
    AnArray:[ 
       { value:"SomeValue1", Id:1}, 
       { value:"SomeValue2", Id:2}, 
       { value:"SomeValue3", Id:3}, 
      ] 
}, 
{ 
    _Id: AnotherObjectID, 
    AnArray:[ 
       { value:"SomeValue1", Id:1}, 
       { value:"SomeValue4", Id:4},     
       { value:"SomeValue5", Id:5}, 
      ] 
} 

あなたは上記の収集とAnArrayフィールドの最初の要素を参照する場合は、両方のドキュメントが同じvalue: SomeValue1, ID: 1を持っているの配列で、その要素のインデックス1が表示されます。

私がしたいことは、すべてのドキュメントの配列の最初の要素からすべての個別の値を取得することです。

私はこれを行う方法とGoogleに何を頼むべきかわからないので、ここで質問として追加しています。

私はmongooseをmongodbと一緒に使用していますが、それを行うのに役立つ方法はありませんでした。

本当に助けていただきありがとうございます。

答えて

2

mongoアグリゲーションパイプラインを使用して結果を得ることができます。

$arrayElemAtは、配列からn番目の要素を取得するために使用できます。

集計クエリ:

db.sample.aggregate([ 
    {$project : {arr_0_value : {$arrayElemAt : ['$AnArray',0]}}}, 
    {$project : {arr_value:'$arr_0_value.value'}}, 
    {$group : {_id:'$arr_value'}} 
]) 

出力:

{ "_id" : "SomeValue1" } 
{ "_id" : "SomeValue5" } 
+0

本当に助け.. – Nilesh

関連する問題