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

Cách tìm các đối tượng lồng nhau cụ thể mà không cần biết khóa cha trong mongodb

Bạn có thể sử dụng $ objectToArray (mongoDB 3.4.4 trở lên), $ filter $project và nhận được một cái gì đó như thế này:

db.collection.aggregate([
  {
    $project: {
      obj: {
        $objectToArray: "$info"
      }
    }
  },
  {
    $project: {
      _id: 0,
      obj: {
        $filter: {
          input: "$obj",
          as: "item",
          cond: {
            $eq: [
              "$$item.v.city",
              "NY"
            ]
          }
        }
      }
    }
  },
  {
    $project: {
      info: {
        $arrayToObject: "$obj"
      }
    }
  },
])

Bạn có thể thấy nó hoạt động tại đây

Ý tưởng là chia đối tượng thành mảng, lọc nó và sau đó chuyển đổi mảng đó trở lại đối tượng.

Tôi đã lọc trên city nhưng tôi chắc chắn rằng bạn hiểu được ý tưởng.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cách tránh $ push-ing nulls trong khung tổng hợp mongo

  2. Tổng hợp MongoDB:Tính Tổng số đang chạy từ tổng của các hàng trước đó

  3. Giao dịch MongoDB?

  4. MongoDB / Meteor:Thêm ID duy nhất cho mọi phần tử mảng

  5. Lập chỉ mục trên một trường nằm trong một loạt các tài liệu con