mongoose 聚合后如何检查mongodb文档中的两个字段是否相等

smdncfj3  于 2023-01-05  发布在  Go
关注(0)|答案(1)|浏览(399)
{
    id: 1,
    name: "sree",
    userId: "001",
    paymentData: {
      user_Id: "001",
      amount: 200
    }
  },
  {
    id: 1,
    name: "sree",
    userId: "001",
    paymentData: {
      user_Id: "002",
      amount: 200
    }
  }

在聚合中展开以检查user_Id是否等于userId后,我得到了此结果

tgabmvqs

tgabmvqs1#

您是希望仅在结果相等时才检索结果(意味着您希望筛选掉值不相同的文档),还是希望添加一个字段来指示这两个结果是否相等?
在这两种情况下,您都可以将后续阶段附加到聚集管道以获得所需的结果。如果要筛选文档,则新阶段可能是:

{
    $match: {
      $expr: {
        $eq: [
          "$userId",
          "$paymentData.user_Id"
        ]
      }
    }
  }

看看它在this playground example中是如何工作的。
如果您想添加一个比较这两个值的字段,那么这个阶段可能就是您要寻找的:

{
    $addFields: {
      isEqual: {
        $eq: [
          "$userId",
          "$paymentData.user_Id"
        ]
      }
    }
  }

看看它在this playground example中是如何工作的。
您也可以将这两个参数组合在一起,如下所示:

{
    $addFields: {
      isEqual: {
        $eq: [
          "$userId",
          "$paymentData.user_Id"
        ]
      }
    }
  },
  {
    $match: {
      isEqual: true
    }
  }

Playground demonstration here

相关问题