$ lookup中日期的时差

时间:2019-07-03 12:03:58

标签: javascript node.js mongodb mongoose

我正在尝试使用汇总和$lookup中的某些日期进行计算。我最初想到的是在聚合中使用函数,但不允许使用JavaScript。

{
  $lookup: {
    from: "sales",
    let: { user: "$_id" },
    pipeline: [
      $project: {
        time: //// CALCULATE TIME DIFFERENCE BETWEEN $createdAt and $startedAt,
      }
    ]
    as: "sales"
  }
}

有什么方法可以在我的$project中返回类似的内容吗?

const calculate = (created, started) => {
    const result = moment(created).diff(moment(started))
    return result
}

1 个答案:

答案 0 :(得分:2)

正如我在另一个问题的可能重复部分中指出的那样,您应该使用aggregation pipeline operators中的一个。特别是,您应该使用$subtract运算符,该运算符也可以用于日期。

{
  $lookup: {
    from: "sales",
    let: { user: "$_id" },
    pipeline: [
      $project: {
        time: { $subtract: ["$createdAt", "$startedAt"]}
      }
    ]
    as: "sales"
  }
}