Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database mongodb阵列聚合提取到父级_Database_Mongodb_Nosql_Aggregate_Aggregation - Fatal编程技术网

Database mongodb阵列聚合提取到父级

Database mongodb阵列聚合提取到父级,database,mongodb,nosql,aggregate,aggregation,Database,Mongodb,Nosql,Aggregate,Aggregation,我试图从mongodb对象的内部数组中获取第一个日期,并使用聚合将其添加到其父对象中。例如: car: { "model": "Astra", "productions": [ "modelOne": { "dateOfCreation": "2019-09-30T10:15:25.026+00:00", "dateOfEstimation": "2017-09-30T10:15:25.026+00:00", "someOnterInfo":

我试图从mongodb对象的内部数组中获取第一个日期,并使用聚合将其添加到其父对象中。例如:

car: {
  "model": "Astra",
  "productions": [
    "modelOne": {
      "dateOfCreation": "2019-09-30T10:15:25.026+00:00",
      "dateOfEstimation": "2017-09-30T10:15:25.026+00:00",
      "someOnterInfo": "whatever"
    },
    "modelTwo": {
      "dateOfCreation": "2017-09-30T10:15:25.026+00:00",
      "dateOfEstimation": "2019-09-30T10:15:25.026+00:00",
      "someOnterInfo": "whatever"
    }
  ]
}
上缴

car: {
  "model": "Astra",
  "earliestDateOfEstimation": "2017-09-30T10:15:25.026+00:00",
  "earliestDateOfCreation": "2017-09-30T10:15:25.026+00:00"
}

如何实现这一点?

我假设在开始聚合时,
modelOne
modelTwo
是未知的。关键的一步是与一起运行,以消除这两个值。然后,您可以使用获取“最早”值:

编辑:

如果总是有
modelOne
,“modelTwo”。。。(固定号码)


不,它们不是unknown@IntoTheDeep好的,所以它变得有点容易了。阵列有500个项目呢?嗨,问题是我有多辆车。所以,当我添加输入:“$productions”时,它不起作用。你能编辑你的帖子并显示你的真实数据以及如何计算值吗?
db.collection.aggregate([
    {
        $addFields: {
            dates: {
                $map: {
                    input: "$car.productions",
                    in: {
                        $let: {
                            vars: { model: { $arrayElemAt: [ { $objectToArray: "$$this" }, 0 ] } },
                            in: "$$model.v"
                        }
                    }
                }
            }
        }
    },
    {
        $project: {
            _id: 1,
            "car.model": 1,
            "car.earliestDateOfEstimation": { $min: "$dates.dateOfEstimation" },
            "car.earliestDateOfCreation": { $min: "$dates.dateOfCreation" },
        }
    }
])
db.collection.aggregate([
    {
        $addFields: {
            dates: { $concatArrays: [ "$car.productions.modelOne", "$car.productions.modelTwo" ] }
        }
    },
    {
        $project: {
            _id: 1,
            "car.model": 1,
            "car.earliestDateOfEstimation": { $min: "$dates.dateOfEstimation" },
            "car.earliestDateOfCreation": { $min: "$dates.dateOfCreation" },
        }
    }
])