Reputation: 504
I want to filter my products. I have 4 products in my Mongodb.
These are:
[
{name: "Dji Inspire 2", droneSeries: "inspire"},
{name: "Dji Phantom 4 Pro", droneSeries: "phantom"},
{name: "Dji Mavic 2 Pro", droneSeries: "mavic"},
{name: "Dji Spark", droneSeries: "spark"}
]
Also I have an input row (checkbox) for selecting drone series for which one to show you. These are Inspire, Phantom, Mavic, Spark.
When I check the inspire checkbox, I see the inspire drone. Everything is good until here. Here is the code which is finding inspire drones:
const droneSeriesArray = await req.body.droneSeriesArray //["inspire"]
const droneSeriesString = await droneSeriesArray.toString() //inspire
let products = await Products.find({droneSeries: droneSeriesString})
But when I check the phantom checkbox, the code is not working:
const droneSeriesArray = await req.body.droneSeriesArray //["inspire", "phantom"]
const droneSeriesString = await droneSeriesArray.toString() //inspire,phantom
let products = await Products.find({droneSeries: droneSeriesString})
I found something like this and tried it:
const droneSeriesArray = await req.body.droneSeriesArray //["inspire", "phantom"]
const droneSeriesString = await droneSeriesArray.toString() //inspire,phantom
let products = await Products.find({droneSeries: {$elemMatch: {droneSeriesString}}})
And this too is not working. So, what do you suppose?
Upvotes: 0
Views: 26
Reputation: 3910
You can use $in
like below
working Playground here
await Products.find({droneSeries: {$in: droneSeriesArray}})
Upvotes: 1