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

Trợ giúp truy vấn MongoDB - truy vấn các giá trị của bất kỳ khóa nào trong một đối tượng con

Tôi đề xuất một sự thay đổi giản đồ để bạn thực sự có thể thực hiện các truy vấn hợp lý trong MongoDB.

Từ:

{
    "userId": "12347",
    "settings": {
        "SettingA": "blue",
        "SettingB": "blue",
        "SettingC": "green"
    }
}

tới:

{
    "userId": "12347",
    "settings": [
        { name: "SettingA", value: "blue" },
        { name: "SettingB", value: "blue" },
        { name: "SettingC", value: "green" }
    ]    
}

Sau đó, bạn có thể lập chỉ mục trên "settings.value" và thực hiện một truy vấn như:

db.settings.ensureIndex({ "settings.value" : 1})

db.settings.find({ "settings.value" : "blue" })

Thay đổi thực sự rất đơn giản ..., vì nó di chuyển tên cài đặt và giá trị cài đặt sang các trường hoàn toàn có thể lập chỉ mục và lưu trữ danh sách cài đặt dưới dạng một mảng.

Nếu bạn không thể thay đổi giản đồ, bạn có thể thử giải pháp của @ JohnnyHK, nhưng được cảnh báo rằng về cơ bản đây là trường hợp xấu nhất về mặt hiệu suất và nó sẽ không hoạt động hiệu quả với các chỉ mục.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Xây dựng chỉ mục MongoDB - Ngăn người dùng kích hoạt các bản dựng mới

  2. Hướng dẫn về MongoDB với Java

  3. tìm kiếm và sắp xếp toàn văn php mongodb

  4. Không thể tạo chỉ mục trong mongodb, khóa quá lớn để lập chỉ mục

  5. MongoDB, Mongoose:Làm cách nào để tìm tài liệu phụ trong tài liệu đã tìm thấy?