Tôi đang cố gắng tìm tài liệu trong đó trường bắt đầu bằng một giá trị.Tôi có thể thực hiện truy vấn MongoDB "bắt đầu bằng" trên trường tài liệu phụ được lập chỉ mục không?
Quét bảng bị tắt bằng cách sử dụng notablescan.
này hoạt động:
db.articles.find({"url" : { $regex : /^http/ }})
này không:
db.articles.find({"source.homeUrl" : { $regex : /^http/ }})
tôi nhận được lỗi:
error: { "$err" : "table scans not allowed:moreover.articles", "code" : 10111 }
Có chỉ số trên cả hai url
và source.homeUrl
:
{
"v" : 1,
"key" : {
"url" : 1
},
"ns" : "mydb.articles",
"name" : "url_1"
}
{
"v" : 1,
"key" : {
"source.homeUrl" : 1
},
"ns" : "mydb.articles",
"name" : "source.homeUrl_1",
"background" : true
}
Có bất kỳ giới hạn nào với truy vấn regex trên chỉ mục tài liệu phụ không?
Nên làm việc, điều gì xảy ra khi bạn giải thích? Bạn đã thử chạy nó với một db cho phép quét? (với một giải thích) –
Tôi đã cố gắng chạy một giải thích nhưng nó đã mất quá lâu tôi đã phải giết nó. Các truy vấn đều trả lại kết quả mong đợi nếu tôi bật quét bảng. – tjrobinson