Estoy construyendo un sitio de comercio electrónico con Vanilla JS, Node y MongoDB. Mi barra de búsqueda actualmente solo puede devolver búsquedas basadas en el nombre del producto de la siguiente manera:
productRouter.get('/', expressAsyncHandler(async (req, res) => { const searchKeyword = req.query.searchKeyword ? { name: { $regex: req.query.searchKeyword, $options: 'i' } } : {}; const products = await Product.find({...searchKeyword}); res.send(products); }) );He intentado agregar categoría y marca dentro del ? {} me gusta en vano:
? { name: { $regex: req.query.searchKeyword, $options: 'i' }, category: { $regex: req.query.searchKeyword, $options: 'i' }, brand: { $regex: req.query.searchKeyword, $options: 'i' } }¡Gracias!
Puede utilizar la función de búsqueda de texto .
Sería algo como esto:
// Creating compound index on db db.product.createIndex({ name: 'text', category: 'text', brand: 'text' }) // Executing query db.product.find({ $text: { $search: "something" } })Si está utilizando Mongoose, aquí se muestra cómo crear un índice.