当前位置: 首页 > 知识库问答 >
问题:

在字段数上使用“like”查询mongodb

苏鸿波
2023-03-14

我需要向MongoDB查询字段的编号:姓名、电话、电子邮件。查询应该支持“like”语法:“%s%”执行查询的更好方法是什么:

  1. 用$或
  2. 查询字段数
  3. 用上述字段的值和该字段的多键索引创建数组字段

示例集合包含以下文档

{
    name: "Evgeny3345",
    phone: "4678946",
    email: "trial@stack.com"
},
{
    name: "bug",
    phone: "84567521",
    email: "bug@stack.com"
},
{
    name: "bug2",
    phone: "84567521",
    email: "deny@stack.com"
 }

当我发现所有带有姓名、电话或电子邮件且包含“eny”的文档时,应返回文档1和3。

共有1个答案

伊俊能
2023-03-14

最好使用搜索模式创建一个RegExp对象,并将其与引用所有三个字段的$or表达式一起使用。差不多

var rgx = new RegExp('ny', 'i'),
    query = {
        "$or": [
            { "name": rgx },
            { "phone": rgx },
            { "email": rgx }
        ]
    };
db.collection.find(query)

样本输出:

/* 0 */
{
    "_id" : ObjectId("562cf265d3ea50dcd6085c52"),
    "name" : "Evgeny3345",
    "phone" : "4678946",
    "email" : "trial@stack.com"
}

/* 1 */
{
    "_id" : ObjectId("562cf265d3ea50dcd6085c54"),
    "name" : "bug2",
    "phone" : "84567521",
    "email" : "deny@stack.com"
}
 类似资料:
  • 我正在使用Spring-Boot 1.5.10,并将JPA连接到SQL Server2016。我确实有一个执行LIKE的自定义查询,但是当字段为NULL时,不会返回记录:

  • 问题内容: 我一直认为您可以在语句中使用它来查询MySQL中的内容。因此,如果我想将一行中的多个字段与1个关键字或字词进行比较: 如果我有一系列要比较的单词: 我不相信语法是正确的。除了类似的东西,是否有一种有效的方法可以编写此代码: 我能正确处理吗? 问题答案: 用这个::

  • 我有这样一个问题: 其中我将存储到数据库中的DateTime与通过java方法传递的localDate进行比较。我收到这个异常: 有一种方法可以配置hibernate/jpa自动进行转换,或者我必须传递一个日期对象,而不是LocalDate?我甚至尝试导入hibernate-java8,但没有改变

  • 问题内容: 可以说我有这样的第一张桌子 分支表 第二张桌子是这样的 余额表 我想查询余额表,其中每一行包含分支表的名称。例如分支表中的“ 123456ABC”,我想从余额表中获取“ ABC”行 我怎样才能做到这一点?到目前为止,我还没有尝试过这个查询 有什么建议吗? 问题答案: 你应该 转换 了的名称模式: 联接看起来更易读:

  • 问题内容: 我试图找到匹配特定模式的行数。在此示例中,所有以“ 123”开头的内容: 这正在工作: 问题是LIKE会有所不同,所以我试图在脚本中定义它,然后执行查询,但这不起作用: 在第二个示例中,如何使该查询正常工作? 编辑:我也尝试了没有期限(也无法正常工作): 问题答案: 您的语法错误;无需在双引号字符串内放置句点。相反,它应该更像 您可以通过打印出字符串以确认与第一种情况相同来确认这一点。