いくつかの集計クエリを実行する Mongo データベースがあります。実行したい単純化されたクエリは次のとおりです。
db.coll.aggregate([
{ $group: {
_id: 'fieldA',
fieldB: { $avg: '$fieldB' }
} },
])
fieldA でデータをグループ化し、fieldB の平均を計算します。とにかく、結果セットのいくつかの行は、fieldB の値として 0 を持っています。これには 2 つの理由が考えられます。
- 平均値は 0 です。
- グループ内のすべてのドキュメントに fieldB がありませんでした (または値として null がありました)。その場合、Mongo の動作は 0 を返します。
他のクエリを発行したり集計パイプラインを終了したりせずに、結果の選択で各行に対してどのシナリオが発生したかを判断することは可能ですか?
アップデート
次のように、いくつかのフィールドの集計を行っているため、null 以外のフィールドを除外することはできません。
db.coll.aggregate([
{ $group: {
_id: 'fieldA',
fieldB: { $avg: '$fieldB' },
fieldC: { $avg: '$fieldC' }
} },
])
一部のドキュメントには、fieldB があっても fieldC がなく、その逆もあります。