sql >> データベース >  >> NoSQL >> MongoDB

mongodb集約フレームワーク-関数から_idを生成します

    MongoDB 2.4と同様に、AggregationFrameworkにカスタム関数を実装することはできません。 $groupが必要な場合 1つ以上のフィールドで、集計演算子と式を使用するか、毎回計算したくない場合は明示的なupdate()を使用してフィールドを追加する必要があります。

    Aggregation Frameworkを使用すると、計算されたbucketを追加できます。 $projectのフィールド $condを使用したパイプラインステップ オペレーター

    numberFieldに基づいて範囲を計算する例を次に示します。 その後、$groupで使用できます sum / avg / etcのパイプライン:

    db.data.aggregate(
        { $project: {
            numberfield: 1,
            someotherfield: 1,
            bucket: {
                $cond: [ {$and: [ {$gte: ["$numberfield", 1]}, {$lte: ["$numberfield", 20]} ] }, '1-20', {
                $cond: [ {$lt: ["$numberfield", 41]},  '21-40',  {
                $cond: [ {$lt: ["$numberfield", 61]},  '41-60',  {
                $cond: [ {$lt: ["$numberfield", 81]},  '61-80',  {
                $cond: [ {$lt: ["$numberfield", 101]}, '81-100', '100+' ]
                }]}]}]}]
            }
        }},
        { $group: {
            _id: "$bucket",
            sum: { $sum: "$someotherfield" }
        }}
    )
    



    1. 配列の長さによるMongoidの順序

    2. MongoDBでは、コレクションが削除されると、インデックスも自動的に削除されますか?

    3. MongoDBで古い接続を処理する方法

    4. エラー:get呼び出しのためのnodejsのgetaddrinfo ENOTFOUND