2016-09-18 80 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場的第一個元素,你會看到兩個文件的數組中的元素索引1具有相同的value: SomeValue1, ID: 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