2016-09-18 48 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