2016-07-27 6 views
1

MongoDBの集計フレームワークを使用した既存のレポートがあります。新しいフィールドを追加したいと思います。数値フィールドの1つが指定された値より小さいすべてのドキュメントの数です。MongoDB集約パイプライン:フィールドを持つドキュメントのカウントが値よりも小さいですか?

私のドキュメントには長さフィールドがあります。これはすでに平均値を計算しています。これに加えて、特定の数値よりも低いドキュメント数が必要です。

私の現在の集約パイプラインは非常に簡単です:

db.streams.aggregate([ 
 
    { $match: { track_id: "ecb96af4537d4263b83f5675dbcc0388" }}, 
 
    { $group: { _id: "$source", listens: { $sum: 1 } } } 
 
])

私はこれが唯一の理由$sumです推測している私は$sum$ltを使用してみましたが、カウントは常に0です。 1が返されたときにカウントされますが、$lttrueを返します。これは私が試したものです:

db.streams.aggregate([{ 
 
    $match: { 
 
    track_id: "ecb96af4537d4263b83f5675dadd0388" 
 
    } 
 
}, { 
 
    $group: { 
 
    _id: "$source", 
 
    listens: { 
 
     $sum: 1 
 
    }, 
 
    skips: { 
 
     $sum: { 
 
     $lt: ["$length", 1000] 
 
     } 
 
    } 
 
    } 
 
}, ])

誰が、私はこれを達成することができます方法を知っていますか?ありがとうございました!

答えて

0

あなたはそんなにありがとう、そう

... 
skips: { 
    $sum: { 
     $cond: { 
      if: { $lt: ["$length", 1000]}, 
      then: 1, 
      else: 0 
     } 
    } 
} 
... 
+0

パーフェクトのようなネストされた条件を追加することができます! –

関連する問題