Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

117
Vistas
Comprobar si el valor de un documento está en una matriz MongoDB

Tengo ~ 200.000 documentos en una colección que se ven así:

 { "_id": "tdhABqSZPEZ2fFcEzOVCb-q8d", "user": "testuser", "content": "Test Content" }

Y tengo una matriz con ~50.000 entradas:

 let arr = ["tree", "apple", "test", "orange", ...otherEntries] // ~ 50,000 entries

Quiero obtener todos los documentos donde cualquier elemento de la matriz esté en el valor del content , sin distinción entre mayúsculas y minúsculas, de modo que se devuelva el documento de ejemplo anterior porque en la matriz está test y en el contenido del documento está Test .

Esto funcionaría usando $where y luego usando una expresión de JavaScript, pero esto no es muy rápido. ¿Existe una manera realmente rápida (< 1-2 segundos) de realizar una consulta como esta o tiene alguna idea sobre cómo reestructurar los documentos para que pueda realizar una consulta rápida como esta?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

  • Si su lista (arr) era pequeña => podría usar hacer un índice y usar $in y filtrar (pero no es pequeña)

  • si quisiera distinguir entre mayúsculas y minúsculas => podría hacer la lista en una colección y $ buscar con índices (pero quiere que no se distinga entre mayúsculas y minúsculas)

En el caso de que tenga una lista grande y quiera mayúsculas y minúsculas

  • únase a la lista en una cadena grande (vamos a MyListString , es una variable en su controlador), separada con espacios, por ejemplo ["sombrero" "árbol"] para convertirse en "árbol de sombrero"

  • crear un índice de texto sobre el contenido es muy fácil de hacer, por ejemplo, en Java hice mycoll.createIndex(Indexes.text("content")); consulte la documentación de su controlador sobre cómo crear índices de texto.

  • Haga una búsqueda o una agregación con coincidencia (MyListString es la variable de cadena grande anterior) (esto hace por defecto una coincidencia que no distingue entre mayúsculas y minúsculas)

    { "$match" { "$text" { "$search" MyListString} } }

El tiempo fue < 1 segundo en mi punto de referencia, pruébalo, creo que estarás bien.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda