MongoDB的总数组文件

时间:2019-02-02 12:33:39

标签: mongodb aggregation-framework aggregate

我有一个MongoDB集合,其中包含以下元素:

{
    "name": "test",
    "instances": [
        {
            "year": 2015
        },
        {
            "year": 2016
        },
    ]
}

如何在名为year的文档中获得test的最小值和最大值?例如。我想要聚合该数组里面的所有文件,但我无法找到该语法。预先感谢!

2 个答案:

答案 0 :(得分:2)

$min$max都使用数组作为参数,在您的情况下,路径instances.year返回一个数组,因此您的查询如下所示:

db.col.aggregate([
    {
        $match: { name: "test" }
    },
    {
        $project: {
            minYear: { $min: "$instances.year" },
            maxYear: { $max: "$instances.year" }
        }
    }
])

答案 1 :(得分:1)

您可以使用以下汇总

db.collection.aggregate([
  { "$project": {
    "maxYear": {
      "$arrayElemAt": [
        "$instances",
        {
          "$indexOfArray": [
            "$instances.year",
            { "$max": "$instances.year" }
          ]
        }
      ]
    },
    "minYear": {
      "$arrayElemAt": [
        "$instances",
        {
          "$indexOfArray": [
            "$instances.year",
            { "$min": "$instances.year" }
          ]
        }
      ]
    }
  }}
])