如何使用MongoDB搜索部分文本?

时间:2011-12-06 19:31:00

标签: mongodb full-text-search

我在文档的集合中有一些值。例如,我的密钥range可以是:

  • 10 - 29
  • 30 - 39
  • 40 - 49

这些都是字符串。我想以某种方式搜索(在MongoDB中)以10开头并以49结尾的字符串。我怎么能这样做?

我知道我应该将这些作为数字,但由于系统的创建结构,这是不可能的。

由于

1 个答案:

答案 0 :(得分:2)

你是对的,最好的选择就是将这些数字建模为数字。但是,我最好(唯一)的替代建议是使用正则表达式搜索。 有关正则表达式搜索mongo和here的文档,请参阅here以创建范围表达式。

根据可能的范围,您的查询将类似于

db.collection.find( { range : /[1-4][0-9] - [1-4][0-9]/ } );

与您指定的范围选项[10 - 29, 30 - 39, 40 - 49]相匹配。请注意,这也会匹配49 - 10,因此如果问题中没有提及任何排除项,则需要强化该表达式。

注意正则表达式查询会产生性能成本,重新构建和使用内置的$gt $lt函数肯定是可取的。

祝你好运!