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

MongoDBアグリゲーションとNodeJSで過去200日間の平均を計算する

    グループ化する前に、ドキュメントをフィルタリングする必要があります。次のようになります:

    db.collection.aggregate([
       {
          $addFields: {
             DateObj: {
                $regexFindAll: { input: "$Date", regex: "\\d+" }
             }
          }
       },
       {
          $set: {
             DateObj: {
                $dateFromParts: {
                   year: { $toInt: { $arrayElemAt: ["$DateObj.match", 0] } },
                   month: { $toInt: { $arrayElemAt: ["$DateObj.match", 1] } },
                   day: { $toInt: { $arrayElemAt: ["$DateObj.match", 2] } },
                   hour: { $toInt: { $arrayElemAt: ["$DateObj.match", 3] } },
                   minute: { $toInt: { $arrayElemAt: ["$DateObj.match", 4] } },
                   second: { $toInt: { $arrayElemAt: ["$DateObj.match", 5] } },
                   timezone: "Europe/Zurich"
                }
             }
          }
       },
       {
          $match: {
             $expr: {
                $gte: ["$DateObj", { $subtract: ["$$NOW", 200 * 60 * 60 * 24 * 1000] }]
             }
          }
       },
       {
          "$group": {
             _id: null,
             "Volume": {
                "$avg": "$Volume"
             }
          }
       }
    ])
    



    1. インスタントメッセージングシステム用にredispub/ subを設計するにはどうすればよいですか?

    2. ノードMongoDBの追加中にReplicaSetIdが競合する

    3. ネストされた配列フィールドのMongodb2dsphereインデックス

    4. バイナリから画像を読み込む(Javascript-Ajax-MongoDB)