Puis-je faire une MongoDB “commence par” requête sur une indexé sous-domaine?

J'essaie de trouver des documents où un champ commence par une valeur.

Les analyses de la Table sont désactivés à l'aide de notablescan.

Cela fonctionne:

db.articles.find({"url" : { $regex : /^http/ }})

Ce n'est pas le cas:

db.articles.find({"source.homeUrl" : { $regex : /^http/ }})

J'obtiens l'erreur:

error: { "$err" : "table scans not allowed:moreover.articles", "code" : 10111 }

Il existe des index sur les deux url et 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
}

Il y a des restrictions avec la regex requêtes sur les sous-indices?

  • Devrait fonctionner, ce qui se produit lorsque vous ne l'expliquez? Avez-vous essayé de le faire fonctionner avec une base de données permettant une analyse? (avec explications).
  • J'ai essayé de lancer l'expliquer, mais il a été si long, j'ai dû le tuer. Les requêtes à la fois d'obtenir les résultats escomptés si j'active les analyses de la table.
InformationsquelleAutor Tom Robinson | 2014-10-29