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

Lập chỉ mục MongoDB cho $ elemMatch

Dựa trên truy vấn của bạn, tôi tưởng tượng rằng tài liệu của bạn trông giống như sau:

{
    "_id" : 1,
    "lc" : "eng",
    "group" : "xyz",
    "indices" : [
        {
            "text" : "as",
            "pos" : 2
        }, 
        {
            "text" : "text",
            "pos" : 4
        }
    ]
}

Tôi đã tạo một bộ sưu tập thử nghiệm với các tài liệu có định dạng này, tạo chỉ mục và chạy truy vấn mà bạn đã đăng với tùy chọn .explain ().

Chỉ mục đang được sử dụng như mong đợi:

> db.test.ensureIndex({"lc":1, "group":1, "indices.text":1, "indices.pos":1})
> db.test.find({ lc: "eng", group: "xyz", indices: { $elemMatch: { text: "as", pos: { $gt: 1 } } } }).explain()
{
    "cursor" : "BtreeCursor lc_1_group_1_indices.text_1_indices.pos_1",
    "isMultiKey" : true,
    "n" : NumberLong(1),
    "nscannedObjects" : NumberLong(1),
    "nscanned" : NumberLong(1),
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : NumberLong(0),
    "millis" : 0,
    "indexBounds" : {
        "lc" : [
            [
                "eng",
                "eng"
            ]
        ],
        "group" : [
            [
                "xyz",
                "xyz"
            ]
        ],
        "indices.text" : [
            [
                "as",
                "as"
            ]
        ],
        "indices.pos" : [
            [
                {
                    "$minElement" : 1
                },
                {
                    "$maxElement" : 1
                }
            ]
        ]
    },
    "server" : "Marcs-MacBook-Pro.local:27017"
}

Bạn có thể tìm thấy tài liệu về tính năng .explain () tại đây: http://www.mongodb .org / display / DOCS / Giải thích

.explain () có thể được sử dụng để hiển thị thông tin về một truy vấn, bao gồm cả chỉ mục (nếu có) được sử dụng.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. sử dụng các luồng akka để xem qua bộ sưu tập mongo

  2. Trình kết nối nguồn Mongodb Kafka chính thức được phân phối với nhiều tác vụ Không hoạt động

  3. Làm cách nào tôi có thể sử dụng các tweet từ api phát trực tuyến của Twitter và lưu trữ chúng trong mongodb

  4. Bỏ qua các ký tự đặc biệt trước điều kiện đối sánh

  5. MongoDB's count () trả về 0 không chính xác nếu một truy vấn được đưa ra