首页 > 解决方案 > 如何从 MongoDB 中的数组中获取多个元素?

问题描述

如何一次从数组中获取满足特定条件的多个元素,例如:Date <= 2020-12-31. 我读到了$elemMatch,但我只能得到一个特定的元素。

"someArray": [
            {
                "Date": "2021-09-30",
                "value": "6.62"
            },
            {
                "Date": "2020-12-31",
                "value": "8.67"
            },
            {
                "Date": "2019-12-31",
                "value": "12.81"
            },
            {
                "Date": "2018-12-31",
                "value": "13.82"
            },
            {
                "Date": "2017-12-31",
                "value": "13.83"
            },
            ...
            ]

标签: mongodb

解决方案


您可以$filter在这样的聚合查询中使用:

db.collection.aggregate([
  {
    "$project": {
      "someArray": {
        "$filter": {
          "input": "$someArray",
          "as": "a",
          "cond": {
            "$lte": [
              "$$a.Date",
              ISODate("2020-12-31")
            ]
          }
        }
      }
    }
  }
])

这里的例子

请注意,您可以使用$projector $set(自 4.2 版起可用):example$addFields: example


推荐阅读