【问题标题】:query mongodb with "like" on number of fields在字段数上使用“like”查询 mongodb
【发布时间】:2016-01-24 16:17:12
【问题描述】:

我需要查询 MongoDB 字段的数量:姓名、电话、电子邮件。 并且查询应该支持"like" 语法:'%s%' 执行它的更好方法是什么:

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

一个示例集合包含以下文档

{
    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。

【问题讨论】:

  • 您是否有一些示例数据来澄清您的问题,以及所需查询的预期输出?
  • 添加示例数据和预期结果
  • 它不同,因为我问的是在字段数上查询“喜欢”的最佳方法是什么。

标签: mongodb mongodb-query


【解决方案1】:

最好使用搜索模式创建一个 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"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2020-08-29
    • 2016-01-05
    • 2017-11-25
    • 2019-05-29
    相关资源
    最近更新 更多