获取基于数组索引的嵌套文档

时间:2016-09-18 16:50:19

标签: mongodb mongoose

我有一个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

我想要做的是,从所有文档数组的第一个元素中获取所有不同的值。

我不清楚如何做到这一点并且不确定要问谷歌,所以我在这里将其作为一个问题添加。

我正在使用mongoose与mongodb,并没有找到任何可以帮助我做到这一点的方法。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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" }