Próbuję znaleźć dokumenty, w których pole zaczyna się od wartości.Czy mogę wykonać zapytanie MongoDB "zaczyna się od" w indeksowanym polu poddokumentów?
Skanowanie tabeli wyłącza się przy użyciu notablescan.
to działa:
db.articles.find({"url" : { $regex : /^http/ }})
To nie:
db.articles.find({"source.homeUrl" : { $regex : /^http/ }})
pojawia się błąd:
error: { "$err" : "table scans not allowed:moreover.articles", "code" : 10111 }
Istnieje indeksy zarówno url
i 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
}
Czy są jakieś ograniczenia dotyczące zapytań regularnych w indeksach subdokumentów?
Czy powinien działać, co się stanie, gdy wykonasz wyjaśnienie? Czy próbowałeś go uruchomić z db pozwalającą skanować? (z wyjaśnieniem) –
Próbowałem uruchomić wyjaśnienie, ale to trwało tak długo, że musiałem go zabić. Zapytania zwracają oczekiwane wyniki, jeśli włączę skanowanie tabeli. – tjrobinson