| Steps To Reproduce: |
Using the standard dataset https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
This works as expected:
db.restaurants.aggregate([
|
{ '$group': {
|
'_id': '$cusine',
|
'avg': {
|
'$avg': {
|
'$avg': {
|
'$map': {
|
'input': {
|
'$filter': {
|
'input': '$grades',
|
'as': 'g',
|
'cond': { '$eq': [ '$$g.grade', 'A' ] }
|
}
|
},
|
'as': 'g',
|
'in': '$$g.score'
|
}
|
}
|
}
|
}
|
}},
|
{ "$sort": { "avg": 1 } }
|
])
|
|
But this returns null values
db.restaurants.aggregate([
|
{ '$group': {
|
'_id': '$_id',
|
'avg': {
|
'$avg': {
|
'$avg': {
|
'$map': {
|
'input': {
|
'$filter': {
|
'input': '$grades',
|
'as': 'g',
|
'cond': { '$eq': [ '$$g.grade', 'A' ] }
|
}
|
},
|
'as': 'g',
|
'in': '$$g.score'
|
}
|
}
|
}
|
}
|
}},
|
{ "$sort": { "avg": 1 } }
|
])
|
|
|
And even in the simplified case
db.restaurants.aggregate([
|
{ '$group': {
|
'_id': '$_id',
|
'avg': {
|
'$avg': {
|
'$avg': "$grades.score"
|
}
|
}
|
}},
|
{ "$sort": { "avg": 1 } }
|
])
|
|
|