Sto cercando di trovare documenti in cui un campo inizia con un valore.Posso eseguire una query "inizia con" MongoDB su un campo del documento secondario indicizzato?
Le scansioni di tabelle sono disabilitate utilizzando notablescan.
Questo funziona:
db.articles.find({"url" : { $regex : /^http/ }})
Questo non lo fa:
db.articles.find({"source.homeUrl" : { $regex : /^http/ }})
ottengo l'errore:
error: { "$err" : "table scans not allowed:moreover.articles", "code" : 10111 }
Ci sono indici su entrambi url
e 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
}
Esistono limitazioni con le query regex sugli indici di documenti secondari?
Dovrebbe funzionare, cosa succede quando si fa una spiegazione? Hai provato a eseguirlo con un db che consente la scansione? (con spiegazioni) –
Ho provato a eseguire una spiegazione ma ci è voluto così tanto tempo che dovevo ucciderlo. Le query restituiscono entrambi i risultati previsti se abilito le scansioni della tabella. – tjrobinson