首页 > 解决方案 > $lookup 中日期的时差

问题描述

我正在尝试使用聚合中的一些日期进行计算,并且$lookup. 我首先考虑在聚合中使用函数,但不允许使用 JavaScript。

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

有没有办法在 my 中返回类似的东西$project

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

标签: javascriptnode.jsmongodbmongoose

解决方案


正如我在另一个问题的可能重复中指出的那样,您应该使用其中一个聚合管道运算符。特别是,您应该使用$subtract也适用于日期的运算符。

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

推荐阅读