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

Chỉ mục tài liệu con trong mongo

Bạn có thể làm:

> db.collection.ensureIndex({"data.name": 1,"data.age":1, "data.job" : 1})
> db.collection.ensureIndex({"data": 1})

Điều này được thảo luận trong tài liệu dưới chỉ mục-trên-trường-nhúng và chỉ mục trên tài liệu phụ

Phần quan trọng của phần tài liệu phụ là 'Khi thực hiện đối sánh bình đẳng trên các tài liệu con, các vấn đề thứ tự thực địa và các tài liệu con phải khớp chính xác.'

Điều này có nghĩa là 2 chỉ mục giống nhau đối với các truy vấn đơn giản.

Tuy nhiên, như ví dụ về tài liệu con cho thấy, bạn có thể nhận được một số kết quả thú vị (mà bạn có thể không mong đợi) nếu bạn chỉ lập chỉ mục toàn bộ tài liệu con thay vì một trường cụ thể và sau đó thực hiện một toán tử so sánh (như $gte ) - nếu bạn lập chỉ mục một trường con cụ thể, bạn sẽ nhận được một chỉ mục kém linh hoạt hơn, nhưng có khả năng hữu ích hơn.

Tất cả thực sự phụ thuộc vào trường hợp sử dụng của bạn.

Dù sao, khi bạn đã tạo chỉ mục, bạn có thể kiểm tra những gì được tạo bằng:

> db.collection.getIndexes()
[
{
    "v" : 1,
    "key" : {
        "_id" : 1
    },
    "ns" : "test.collection",
    "name" : "_id_"
},
{
    "v" : 1,
    "key" : {
        "data.name" : 1,
        "data.age" : 1,
        "data.job" : 1
    },
    "ns" : "test.collection",
    "name" : "data.name_1_data.age_1_data.job_1"
}

]

Như bạn có thể thấy từ đầu ra, nó đã tạo một khóa mới có tên là data.name_1_data.age_1_data.job_1 (_id_ chỉ mục luôn được tạo).

Nếu bạn muốn kiểm tra chỉ mục mới của mình thì bạn có thể thực hiện:

> db.collection.insert({data:{name: "A",age:"B", job : "C"}})
> db.collection.insert({data:{name: "A1",age:"B", job : "C"}})
> db.collection.find({"data.name" : "A"}).explain()
{
    "cursor" : "BtreeCursor data.name_1_data.age_1_data.job_1",
     .... more stuff

Điều chính là bạn có thể thấy rằng chỉ mục mới của mình đã được sử dụng ( BtreeCursor data.name_1_data.age_1_data.job_1 trong trường con trỏ là những gì cho biết đây là trường hợp). Nếu bạn thấy "cursor" : "BasicCursor" , thì chỉ mục của bạn đã không được sử dụng.

Để biết thêm thông tin chi tiết, hãy xem tại đây.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cài đặt mongoDB (quy trình con không thành công, đã thoát với lỗi số 100)

  2. Làm thế nào để chuyển đổi từ kiểu dữ liệu chuỗi sang ngày tháng?

  3. Giới thiệu Biểu đồ tra cứu trong MongoDB

  4. sử dụng $ và với $ match trong mongodb

  5. Các cụm MongoDB được phân bổ theo địa lý trên AWS ở khu vực EU