node.js - 如何计算 Mongoose 从开始日期到结束日期的总时间?

标签 node.js mongoose

我们的用户架构是这样的......

const docSchema = new mongoose.Schema({
    userType: {
        type: String,
        enum: [
            'customer',
            'driver'
        ]
    },
    userId: {
        type: String,
        refPath: 'userType'
    },
    device: {
        type: String,
        enum: [
            'Android',
            'IOS'
        ]
    },
    appVersion: {
        type: String,
        default: ''
    },
    deviceId: {
        type: String,
        default: ''
    },
    connected: {
        type: Date,
        default: ''
    },
    disconnected: {
        type: Date,
        default: ''
    }
}, {
        timestamps: true
    });

现在,我们必须统计用户使用连接和断开连接的总在线时间, 任何人都可以帮助我们如何实现这一目标?

最佳答案

从您的问题来看,似乎对于每个 session (即一次连接和断开连接),您都在 DocSchema 中为用户创建一个文档 [让我们调用模型 DocSchema ]。您想知道用户的总时间。您可以使用聚合

这是一个聚合示例,用于查找 userId searchKey 的总时间

Schema2.aggregate({
  $match: {
    userId: searchKey,
    $project: {
      diff: {
        $subtract: ['$disconnected', '$connected']
      }
    },
    $group: {
      _id: 'justAGroupName',
      total: {
        $sum: '$diff'
      }
    }
  }
});

有关更多信息,请查看 mongodb aggregation doc

关于node.js - 如何计算 Mongoose 从开始日期到结束日期的总时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57533278/

相关文章:

node.js - System.js builder.buildStatic 只输出文件名

node.js - docker 镜像中的 ssh 凭证

node.js - 使用 node.js 在特定延迟后从 Azure ServiceBus 主题发送消息

mongodb - NestJS、MongoDB、Mongoose、GraphQL - 重复我自己描述用户或任何模型

node.js - NodeJS 一条路由中的两个查询

javascript - 生成两个已知点之间的坐标

javascript - 用于验证 UTF-8 的正则表达式仅包含 "normal"个字符

node.js - Mongoose 嵌套填充不工作

node.js - Mongoose 使用 SSL digital ocean 与 CA_CERT 连接

node.js - 按日期排序 Mongoose 抛出错误记录超过 9