tutorial example español javascript node.js mongodb express mongoose

javascript - example - La mejor manera de realizar una búsqueda de texto completo en MongoDB y Mongoose



mongoose tutorial español (2)

Para la consulta de búsqueda, puede usar el complemento Elasticsearch. En Elasticsearch puede realizar su propia consulta de búsqueda personalizada para buscar cualquier texto y cadena en particular con la duración de tiempo especificada en tiempo real.

Pero antes de eso, debe realizar la indexación de sus documentos json que residen en MongoDB. Debe conectar MongoDB con el servidor Elasticsearch. Luego, utilizando la funcionalidad river de Elasticsearch, debe realizar la indexación en el servidor Elasticsearch de sus datos, luego solo usted puede realizar su consulta personalizada para la búsqueda.

Estoy buscando en Google desde hace días e intenté muchas cosas, pero todavía no puedo realizar una buena búsqueda de texto completo en mi colección de usuarios.

Intenté ElasticSearch pero fue bastante imposible consultar y paginar ...

Probé muchos complementos para Mongoose como ElMongo, mongoose-full-text, Mongoosastic, etc. Todos están muy mal documentados y no sé cómo realizar una buena búsqueda de texto completo.

Entonces, mi colección es una colección normal:

user = { name: String, email: String, profile: { something: String, somethingElse: String } }

Tengo una entrada de búsqueda en una página con un POST simple, si escribo hello world lo que necesito es buscar en todos los campos de la colección las palabras coincidentes de mi consulta de búsqueda y obtener los resultados.

Será realmente bueno también tener opciones para manejar una paginación como 10 elementos por página o algo así ...

¿Cuál es la mejor solución para lograr esto? Estoy usando MongoDB 2.6. * Con Mongoose, NodeJS y ExpressJS.

Gracias.


Puede agregar un índice de texto a su definición de esquema Mongoose que le permita usar el operador $text en sus consultas de búsqueda para buscar todos los campos incluidos en el índice de texto.

Para crear un índice que admita la búsqueda de texto en, por ejemplo, name y profile.something :

var schema = new Schema({ name: String, email: String, profile: { something: String, somethingElse: String } }); schema.index({name: ''text'', ''profile.something'': ''text''});

O si desea incluir todos los campos de cadena en el índice, use el comodín ''$**'' :

schema.index({''$**'': ''text''});

Esto le permitiría realizar una consulta de búsqueda de texto paginado como:

MyModel.find({$text: {$search: searchString}}) .skip(20) .limit(10) .exec(function(err, docs) { ... });

Para obtener más detalles, lea la documentación completa de los índices de texto de MongoDB .