【问题标题】:Get nested document based on array index根据数组索引获取嵌套文档
【发布时间】:2017-01-26 09:06:21
【问题描述】:

我有一个 mongodb 集合,该集合中的每个文档都包含一个不同文档类型的数组。

前:

{
   _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,但没有找到任何可以帮助我做到这一点的方法。

非常感谢任何帮助。

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    您可以使用 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" }
    

    【讨论】:

      猜你喜欢
      • 2017-01-23
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多