我有一个MongoDB集合,其中包含以下元素:
{
"name": "test",
"instances": [
{
"year": 2015
},
{
"year": 2016
},
]
}
如何在名为year
的文档中获得test
的最小值和最大值?例如。我想要聚合该数组里面的所有文件,但我无法找到该语法。预先感谢!
答案 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" }
]
}
]
}
}}
])