我有一个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,并没有找到任何可以帮助我做到这一点的方法。
非常感谢任何帮助。
答案 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" }