包含搜索文本的MongoDB查询数组

时间:2012-03-22 15:16:47

标签: mongodb mongomapper

我有以下查询(MongoMapper / Rails):     Card.where(:card_tags => {:$ all => search_tags}

其中card_tags是一个字符串标签数组,search_tags是搜索字符串的数组。目前,如果有人搜索“雪”,则不会返回标记为“滑雪板”的结果。

如何修改此查询以搜索card_tags中的任何字符串是否包含search_tags中的任何字符串?我们会想到正则表达式,但不确定语法是否为数组......

由于

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式,但是您将进行完整的收集扫描 - 这对性能不利。

只有在“以”搜索类型“开头”时才能使用带索引的正则表达式,但我怀疑你是否想限制自己。

对于全文搜索,最好使用一些外部搜索服务 - 例如Lucene,ElasticSearch或Solr。

请参阅此文章:like query in mongoDB