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

MongoDB C # Chỉ mục mảng hoặc lập chỉ mục các mục bên trong của mảng

Bạn không thể làm điều này cụ thể, bạn không thể lập chỉ mục về giá trị của khóa.

Một giải pháp

Tuy nhiên, bạn có thể lập chỉ mục trên các mục trong một mảng.

Giả sử rằng dữ liệu của bạn trông giống như sau:

items:
  [
       { Key: "Name", Value: "Peter", Type:String },
       { Key: "Age", Value: "18", Type:int },
       { Key: "City", Value: "San Jose", Type:String },
       ...30 to 40 items.
  ]

Bạn sẽ làm như sau để tạo chỉ mục trên items.Key :

 db.foo.ensureIndex( { 'items.Key' } )

Khi bạn làm như sau, bạn sẽ sử dụng chỉ mục:

 db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )

Điều này sẽ thu hẹp tìm kiếm chỉ những mục có Key = "City" . Nếu đây là tất cả mọi thứ, thì điều này có thể sẽ không hữu ích.

Giải pháp thay thế

Tại sao lại là items một mảng? Bạn có thể không cấu trúc dữ liệu như thế này:

items:
  {
       "Name" : { Value: "Peter", Type:String },
       "Age" : { Value: "18", Type:int },
       "City" : { Value: "San Jose", Type:String },
       ...30 to 40 items.
  }

Bây giờ bạn có thể lập chỉ mục trên items.City.Value , đó là những gì bạn đã tìm kiếm ngay từ đầu. Điều này cũng làm cho cấu trúc dữ liệu nhỏ hơn một chút.

Tùy thuộc vào bản chất dữ liệu của bạn, bạn cũng có thể muốn xem chỉ mục thưa thớt để giúp kiểm soát kích thước chỉ mục của bạn.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose find () không trả về kết quả

  2. mongodb tham gia nhiều bộ sưu tập

  3. Điền các ngày còn thiếu trong hồ sơ

  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. Mongodb- Thêm chỉ mục duy nhất trên một bộ sưu tập hiện có