【问题标题】:like query in mongoDB像 mongoDB 中的查询
【发布时间】:2011-03-17 13:59:57
【问题描述】:

我正在研究 mongodb 。我想在其中使用类似查询。我的收藏结构如下。

{ "name" : "xy" , "age" : 34 , "location" : "sss"}

{ "name" : "xyx" , "age" : 45 , "location" : "sshs"}

{ "name" : "x" , "age" : 33 , "location" : "shhss"}

{ "name" : "pq" , "age" : 23 , "location" : "hhh"}

{ "name" : "pqr" , "age" : 12 , "location" : "sss"}

我想查找与“name”匹配的记录:“x”。

所以查询将返回匹配 xy ,xyz,x 的所有三个记录。

在mongo中可以吗?

如果有人知道请回复。

谢谢

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您可以使用正则表达式来做到这一点:

    db.customers.find( { name : /^x/i } );
    

    您可能希望在名称字段上有一些索引。

    MongoDB Documetation 网站了解更多信息。

    【讨论】:

    • @pingw33n 有一个很好的观点。一种方法是在集合中添加另一个字段,该字段存储名称的小写值,对其进行索引,然后使用小写的输入进行查询。
    • @pingw33n 感谢您指出这一点。 @blu 这就是我在这种情况下使用的方法,它似乎工作得很好,除非你真的需要区分大小写,你有一个“Xx”值和一个“xX”值,它们都被标准化为“xx”。
    • 你好恶魔,db.customers.find( { name : /^pqr/i } );这个查询有效,但假设我给出像 pqr 这样的整个单词,那么它只返回上述集合的一条记录。但我想匹配匹配 pqr 和 pq 的记录。在mongodb中可以吗?或者我做错了什么。请告诉我 。谢谢
    • 如果您正在搜索整个单词,您将永远不会得到部分单词匹配。你为什么要?如果您正在寻找这样做的东西,您可能想研究像 Solr\Lucene 这样的搜索引擎,它有能力在搜索方面做更多有趣的事情。
    【解决方案2】:

    你可以访问 http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions

    您可以在数据库查询表达式中使用正则表达式!

    【讨论】:

    • 寻求猫鼬支持
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2012-05-13
    • 2015-05-11
    • 2018-11-16
    • 2018-06-22
    相关资源
    最近更新 更多