I'm building a web app using Node and MongoDB Atlas. I need to implement a search bar, which will be used to search a MongoDB collection in 2 particular fields. I was doing some research on the best way to build this, but the Mongo docs are slightly confusing.
These docs for Atlas Search mention a $search
aggregation stage. On the other hand, these docs for MongoDB Aggregation Stages have no mention of the $search
stage at all.
I want the search to be 'fuzzy', and this answer says this should be done using the regex, but I couldn't find any reference for a $regex
operator in the Atlas Search docs. For a previous task, I created an aggregation pipeline in which I used the $match
operator with db.collection.aggregate()
. It seems to me that the $match
operator should work just fine for the fuzzy search bar as well, since it would allow me to use the $regex
operator. I believe $match
can also take advantage of any indexes you might create on Atlas for your queries.
So my question is basically this - What's the difference between using $search
and $match
? Does one offer performance/cost benefits over the other? Or are they for different use cases which I'm totally missing? If using $search
is the way to go, how would one make the query such that it's fuzzy? I will be grateful for any help.