MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tổng hợp với nhiều tiêu chí và đối sánh tổng dựa trên khóa đếm

Vì có hai bộ sưu tập, chúng tôi cần sử dụng

  • $lookup để tham gia bộ sưu tập kéo. Ở đây tôi đã sử dụng chưa được mô tả truy vấn phụ
  • Việc tổng hợp được thực hiện trong colA bộ sưu tập, nhưng bên trong lookup pipeline chúng tôi thực hiện tổng hợp trên colB . $unwind giúp loại bỏ cấu trúc các items . $match giúp loại bỏ dữ liệu không mong muốn (giai đoạn đối sánh yêu cầu $ expr ).
  • Sau khi tham gia thành công, chúng tôi chỉ cần đếm mảng bằng cách sử dụng $size
  • $reduce giúp tính tổng giá trị mảng của size

Tập lệnh mongo được cung cấp bên dưới.

db.colA.aggregate([
  {
    $lookup: {
      from: "colB",
      let: {
        bid: "$_id"
      },
      pipeline: [
        {
          $match: {
            $or: [
              {
                is_delete: false
              },
              {
                is_delete: {
                  "$exists": false
                }
              }
            ]
          }
        },
        {
          $unwind: "$items"
        },
        {
          $match: {
            $expr: {
              $eq: [
                "$items._id",
                "$$bid"
              ]
            }
          }
        },
        
      ],
      as: "data"
    }
  },
  {
    $project: {
      count: {
        $reduce: {
          input: "$data",
          initialValue: 0,
          in: {
            $add: [
              "$$value",
              "$$this.items.size"
            ]
          }
        }
      }
    }
  }
])

Làm việc Sân chơi Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tổng hợp MongoDB với $ lookup chỉ bao gồm (hoặc dự án) một số trường để trả về từ truy vấn

  2. Tập hợp Mongodb Hàng thành cột

  3. Mongo's Cursor.nextObject Đôi khi trả về giá trị Null không đúng cách?

  4. loại bỏ các giá trị 0 nếu 0 được theo sau bởi> =1 khỏi các mảng trong MongoDB

  5. Làm cách nào để nối kết quả chuỗi từ nhiều bản ghi MongoDB thành một kết quả duy nhất trong MongoDB?