【问题标题】:How to search for parts of text with MongoDB?如何使用 MongoDB 搜索部分文本?
【发布时间】:2011-12-06 19:30:59
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

    标签: mongodb full-text-search


    【解决方案1】:

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

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

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

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

    注意正则表达式查询是以性能为代价的,重构和使用内置的$gt $lt 函数当然是可取的。

    祝你好运!

    【讨论】:

    • 如果可能,请确保使用有根的正则表达式(即,以 ^ 开头),否则索引将不起作用。
    • @mnemosyn 很好,了解何时使用索引很重要。
    猜你喜欢
    • 2018-06-07
    • 2022-12-05
    • 2017-12-03
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多