【问题标题】:how to search for a partial match text using mongodb or pymongo如何使用 mongodb 或 pymongo 搜索部分匹配文本
【发布时间】:2018-06-07 11:41:04
【问题描述】:

我有一个包含嵌套 json 数据的文档。它有 15 种文本和 10 种整数数据类型。

如何编写查询以显示任何匹配的文本或整数?

我尝试了以下查询,但没有按预期工作。

db.customers.find({ sno : /ab/ },{ name : /ab/ }).count()

我得到 0 计数作为结果。我在看 OR 子句而不是 AND 子句。

【问题讨论】:

    标签: mongodb pymongo


    【解决方案1】:

    您可以在$or 语句中指定每个字段:

     db.customers.find({$or: [
         {field1: /ab/ },
         {field2: /ab/ },
         {field3: /ab/ },
         {field4: /ab/ },
         {field5: /ab/ }
     ]}).count()
    

    您也可以使用文本查询,为此您必须创建一个文本索引:

    db.collection.createIndex( { "$**": "text" } )
    

    然后使用以下方式查询它:

    db.articles.find( { $text: { $search: "ab" } } )
    

    文字查询 - https://docs.mongodb.com/manual/reference/operator/query/text/ 文字索引——https://docs.mongodb.com/manual/core/index-text/

    【讨论】:

    • 感谢凯文的回复!如何在 pymongo 中转换此查询?我尝试在各处添加引号和双引号,但没有得到正确的响应。
    • 你需要创建一个正则表达式,看这个答案:stackoverflow.com/a/4877662/4079967
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多