Actually Im a new mongodb express developer. I want to optimize my backend data fetching.
I have tried many ways but didn't work.
Actually I dont want to pass full name as parameter or search text.
But I'm confused is there any way to build a query that will help me to get partially matched data from mongodb ? like includes("some text") method works.
Here is my code. it works fine but i don't want to filter after fetching:
//Getting products using search query
app.get("/products", async (req, res) => {
//I want to use this query to optimize data fetching
let query = {}; //Optimization needed
//To search products using products name (my current solution)
if (req.query.name) {
// query = {name: req.query.name} // Only gives result for exact match
const cursor = productsCollection.find(query);
const products = await cursor.toArray();
const searchText = req.query.name.toLowerCase();
const filteredProducts = products.filter((product) =>
product.name.toLowerCase().includes(searchText)
);
res.send(filteredProducts);
}
//To get all products
else {
const cursor = productsCollection.find(query);
const products = await cursor.toArray();
res.send(products);
}
});