最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

$ lookup多个字段

运维笔记admin12浏览0评论

$ lookup多个字段

$ lookup多个字段

我有两个集合,试图通过两种不同的条件得到总金额的总和。 Heere是我的代码:

db.drivers.aggregate([
  {
    $lookup: {
      from: "bookings",
      let: { driver_id: "$_id" },
      pipeline: [
        { $match: { $expr: { $eq: ["$driverId", "$$driver_id"] } } },
        {
          $group: {
            _id: "$driverId",
            totalAmount: { $sum: "$driverAmount" }
          }
        }
      ],
      as: "bookingdata",
      pipeline: [
        {
          $match: {
            $expr: {
              $and: [
                { $eq: ["$driverId", "$$driver_id"] },
                { $eq: ["$payment.settled", false] }
              ]
            }
          }
        },
        {
          $group: {
            _id: "$driverId",
            totaldues: { $sum: "$driverAmount" }
          },
          bookingdata: {
            $push: "$totaldues"
          }
        },
        { $project: { _id: 0, totalAmount: 1, totaldues: 1 } }
      ]
    }
  }
]);

它产生总量或总量,但不是两者。如何获取驾驶员详细信息以及总金额和总会费?

回答如下:

您不能在同一个对象中多次使用相同的字段,就像在这里使用pipeline一样。

而是在$facet中使用$lookup聚合来一次处理多个管道。

db.drivers.aggregate([
  { "$lookup": {
    "from": "bookings",
    "let": { "driver_id": "$_id" },
    "pipeline": [
      { "$facet": {
        "totaldues": [
          { "$match": {
            "$expr": {
              "$and": [
                { "$eq": ["$driverId", "$$driver_id"] },
                { "$eq": ["$payment.settled", false] }
              ]
            }
          }},
          { "$group": {
            "_id": "$driverId",
            "totaldues": { "$sum": "$driverAmount" },
            "bookingdata": { "$push": "$totaldues" }
          }},
          { "$project": { "_id": 0, "totalAmount": 1, "totaldues": 1 } }
        ],
        "totalAmount": [
          { "$match": { "$expr": { "$eq": ["$driverId", "$$driver_id"] } }},
          { "$group": {
            "_id": "$driverId",
            "totalAmount": { "$sum": "$driverAmount" }
          }}
        ]
      }}
    ],
    "as": "bookingdata"
  }}
])

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论