【问题标题】:mongo search sub stringmongodb搜索子串
【发布时间】:2015-02-03 09:08:58
【问题描述】:

大家好,我正在使用 MongoDB 开发一些应用程序,我必须在集合中找到子字符串。

我有一个收藏查询,如下图。

> db.Query.find();

>{ "_id" : ObjectId("54c9ec8ead38d420d87743b0"), "QueryID" : 1, "QueryString" : "
List my games", "QueryFrequency" : 9, "QueryResultset" : 3 }

>...

现在我想在 QueryString 中搜索子字符串。 例如这里是“QueryString”中的“游戏”:“列出我的游戏”

为此,我在 QueryString 上启用了索引,并且在运行以下命令后,我也得到了一些结果。

> db.Query.runCommand("text" , {search : "games"});

"text" 是我的索引的名称。

现在的问题是,只有当我正在搜索的单词的长度大于 3(即超过 3 个字符)时,我才能得到结果

在我的示例中,当我使用“列表”或“游戏”进行搜索时,我会得到结果, 但是当我使用“我的”或任何其他少于 4 个字符的单词时,没有结果。

有什么办法可以解决这个问题还是我缺少一些设置。

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    您可以为此使用正则表达式。你的查询会是这样的

    db.collection.find({"query_string":{$regex: your_regex }})
    

    【讨论】:

    • 你甚至可以使用正则表达式:{$regex: /games/}.
    • 谢谢,这是有效的,但这是一个区分大小写的搜索,有什么办法可以匹配不同的大小写。
    • 我用过 > db.Query.find({"QueryString":{$regex:"list"}}) ,所以它为“list”和“List”给出了不同的结果
    • 你可以在正则表达式中指定忽略大小写,类似于/Games/i
    • 效果很好,谢谢。你能告诉我如何在 C# 中实现它吗?目前我正在使用var collection = database.GetCollection("Query").Find(Query.Text("list"));
    【解决方案2】:

    对于不区分大小写的搜索,您可以使用此

    db.users.find ({ "name" : /my/i } )
    

    i 代表不敏感

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多