【问题标题】:MongoDB - Aggregate - Filter on the last element in an array field in collectionMongoDB - 聚合 - 过滤集合中数组字段中的最后一个元素
【发布时间】:2021-02-14 19:02:06
【问题描述】:

我在 MongoDB 中有一个 Devices 集合,其结构如下:

{
  "group": [
    "group1"
  ]
},
{
  "group": [
    "group1",
    "group2"
  ]
},
{
  "group": []
},
{
  "group": [
    "group3",
    "group4"
  ]
}

如何过滤或聚合文档,以便只返回每个 group 数组的最后一个元素,包括空白数组?

预期结果:

["group1", "group2", "", "group4"]

【问题讨论】:

    标签: javascript node.js arrays mongodb aggregation-framework


    【解决方案1】:

    您可以$group 并使用$arrayElemAt 获取最后一个元素。此外,您需要$ifNull 指定默认值(空字符串):

    db.collection.aggregate([
        {
            $group: {
                _id: null,
                lastElements: { $push: { $ifNull: [ { $arrayElemAt: [ "$group", -1 ] }, "" ] } }
            }
        }
    ])
    

    Mongo Playground

    【讨论】:

    • 谢谢@mickl!这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多