psdr16
psdr16

Reputation: 41

MongoDB query array containing search text

I have the following query (MongoMapper/Rails): Card.where(:card_tags => {:$all => search_tags}

Where card_tags is an array of string tags and search_tags is in array of the search strings. At the moment if someone searches 'snow', no results with tag 'snowboarding' will be returned.

How can I modify this query to search whether any strings in card_tags contains any of the strings in search_tags? Regular expressions come to mind but not sure of the syntax given these are arrays...

Thanks

Upvotes: 0

Views: 1376

Answers (1)

Bryan Migliorisi
Bryan Migliorisi

Reputation: 9210

You can use regular expressions but you will be doing full collection scans - this is going to be bad for performance.

You can use regex with an index only if you "starts with" type of searches, but I doubt you want to limit yourself to that.

For fulltext searching, you are better off using some external search service for this - like Lucene, ElasticSearch, or Solr.

Refer to this post too: like query in mongoDB

Upvotes: 1

Related Questions