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

mongoDBでユーザーが費やした合計時間を検索します

    timeOfDayを見つけることができます TimeOfVisitから フィールドに移動し、 $sumを使用します 合計数を取得するには

    db.collection.aggregate([
      { "$match": { "User": req.query.User }},
      { "$addFields": {
        "timeOfDay": {
          "$mod": [
            { "$toLong": "$TimeOfVisit" },
            1000*60*60*24
          ]
        }
      }},
      { "$group": {
        "_id": "$location",
        "totalTimeInMilliseconds": { "$sum": "$timeOfDay" }
      }}
    ])
    

    Output

    [
      {
        "_id": "Reception",
        "totalTimeInMilliseconds": 33165688
      },
      {
        "_id": "Cafeteria",
        "totalTimeInMilliseconds": 98846064
      }
    ]
    

    さらに分割して、日、時間、分、または秒を取得できます

    1 hour = 60 minutes = 60 × 60 seconds = 3600 seconds = 3600 × 1000 milliseconds = 3,600,000 ms.

    db.collection.aggregate([
      { "$addFields": {
        "timeOfDay": {
          "$mod": [
            { "$subtract": [ "$TimeOfVisit", Date(0) ] },
            1000 * 60 * 60 * 24
          ]
        }
      }},
      { "$group": {
        "_id": "$location",
        "totalTimeInMiniutes": {
          "$sum": { "$divide": ["$timeOfDay", 60 × 1000] }
        }
      }}
    ])
    

    mongodbの場合4.0 以上

    db.collection.aggregate([
      { "$addFields": {
        "timeOfDay": {
          "$mod": [
            { "$toLong": "$TimeOfVisit" },
            1000 * 60 * 60 * 24
          ]
        }
      }},
      { "$group": {
        "_id": "$location",
        "totalTimeInMiniutes": {
          "$sum": { "$divide": ["$timeOfDay", 60 × 1000] }
        }
      }}
    ])
    



    1. MongoDBの特定のドキュメントの配列内の特定の埋め込みドキュメントの値を更新するにはどうすればよいですか?

    2. Redis-エラー:値は有効なfloatではありません

    3. 何の応答も得られずにredisでコマンドを実行するにはどうすればよいですか?

    4. Double NestedArrayMongoDBで検索