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

Kích thước tài liệu mảng dự án MongoDB với điều kiện

Bạn cần có ít nhất MongoDB v3.4.4

Chiếu "array.a": 1 sẽ trả về ["A", "A", "A"] .Kể từ array của bạn trường là một mảng, chúng ta cần sử dụng $map toán tử cho phép lặp.

Để lặp lại các khóa đối tượng, chúng tôi cần chuyển đổi nó thành mảng với $ objectToArray nhà điều hành.

"c": {                   "c": [
    "x": true,             {k: "x", v: true},
    "y": true,       ->    {k: "y", v: true},
    "z": false             {k: "z", v: false},
  }                      ]

Sau đó, chúng tôi áp dụng $filter toán tử để chỉ lấy k:v các cặp có vtrue .

db.collection.aggregate([
  {
    $match: {}
  },
  {
    $project: {
      array: {
        $map: {
          input: "$array",
          as: "arr",
          in: {
            a: "$$arr.a",
            b: "$$arr.b",
            c: {
              $size: {
                $filter: {
                  input: {
                    $objectToArray: {
                      $ifNull: [
                        "$$arr.c",
                        {}
                      ]
                    }
                  },
                  cond: {
                    $eq: [
                      "$$this.v",
                      true
                    ]
                  }
                }
              }
            }
          }
        }
      }
    }
  }
])

MongoPlayground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để tham gia truy vấn trong mongodb?

  2. Trường được tạo tự động cho MongoDB bằng Spring Boot

  3. Cách xác định đối tượng trong mảng trong lược đồ Mongoose một cách chính xác với chỉ mục địa lý 2d

  4. Lưu trữ ngày trong MongoDB mà không cần xem xét múi giờ

  5. Không thể kết nối với máy chủ 127.0.0.1:27017