Estoy tratando de encontrar documentos en los que un campo se inicia con un valor.

Mesa de exploraciones se desactiva con notablescan.

Esto funciona:

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

Esto no:

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

Me sale el error:

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

Hay índices en ambos url y 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
}

¿Hay limitaciones con regex consultas en subdocumento índices?

  • Debería funcionar, lo que sucede cuando usted hace una explicar? ¿Has probado a ejecutarlo con un db que permite escanear? (con un explain)
  • He intentado correr un explicar, pero que estaba tomando tanto tiempo tuve que matarlo. Las consultas devuelven los resultados esperados si puedo habilitar el análisis de tabla.
InformationsquelleAutor Tom Robinson | 2014-10-29

1 Comentario

  1. 31

    Cuando se deshabilita la mesa de exploraciones, esto significa que cualquier consulta donde una mesa de análisis «gana» en el optimizador de consultas no se podrá ejecutar. No has publicado un explicar, pero es razonable suponer que es lo que está sucediendo aquí está basada en el error. Pruebe las sugerencias de que el índice de forma explícita:

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

    Que debe eliminar de la tabla de análisis como una opción posible y permitir que la consulta devuelva correctamente.

    • Esto se ve prometedor, a pesar de que estoy recibiendo: error: { «$err» : «mal consejo», «código» : 10113 }
    • Ese es el error que se obtiene cuando se especifica un índice que no existe. Lo que sugiere que, o bien no está presente, no se terminó de construir todavía (nota de fondo: true), o que puede haber un error tipográfico
    • Buen punto, aunque he confirmado que el índice se ha terminado de construir y sigue apareciendo el mismo error. Aún más extraño, si puedo especificar el nombre de un no-subdocumento índice, por ejemplo, url, obtengo los resultados de la espalda pero no honrar a los regex consulta! Por ejemplo: db.de los artículos.find({«fuente.homeUrl» : { $regex : /^http/ }}).sugerencia({«url» : 1})
    • Los resultados del problema puede ser debido a este error: jira.mongodb.org/browse/SERVER-15235 que actualmente no están fijas, incluso en maestro de escribir esto. La incapacidad de la pista es impar, y debe ser reproducible, así que voy a ver si puedo hacer que suceda – se puede mencionar lo de la versión en la que estás actualmente?
    • Estamos usando 2.4.9 en la actualidad.
    • Suerte reproducir?
    • ¿Cómo puedo utilizar una variable en la posición de ‘http’ ? Estoy usando Node.js

Dejar respuesta

Please enter your comment!
Please enter your name here