【问题标题】:How to select a document if a field contains a substring如果字段包含子字符串,如何选择文档
【发布时间】:2020-05-02 18:04:41
【问题描述】:

我有一个 movielens 数据库,例如,要搜索标题中包含“泰坦尼克号”的所有文档,我运行以下 Mango 查询:

{
   "selector": {
      "$or": [
         {
            "Title": {
               "$regex": "titanic"
            }
         },
         {
            "Title": {
               "$regex": "Titanic"
            }
         }
      ]
   }
}

我有我想要的。所以我现在的问题是:只有当我记得一个子字符串时才能选择一个文档?

例如,对于标题“古墓丽影”,我记得包含“raider”。我尝试过使用正则表达式,但它不起作用。

【问题讨论】:

    标签: couchdb couchdb-mango


    【解决方案1】:

    使用(?i) 使regex 不区分大小写。

    .* 放在搜索词“titanic”的前面和末尾,以匹配任何字符零次或多次。

    {
      "selector": {
        "Title": {
          "$regex": "(?i).*titanic.*"
        }
      }
    }
    

    【讨论】:

    • 感谢玩具。如果可以的话,还有一个问题:您知道是否可以根据子字符串进行搜索?例如:标题是“狮子王”,我只会搜索“国王”
    • @Malotino:这就是我回答中的选择器所做的,通过子字符串进行搜索。只需使用"$regex": "(?i).*king.*"
    • 对不起,我弄糊涂了。我意识到它只会让 CouchDB 不区分大小写。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多