mongodb - 在字段数上使用 "like"查询 mongodb

标签 mongodb mongodb-query

我需要查询 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。

最佳答案

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

关于mongodb - 在字段数上使用 "like"查询 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33330946/

相关文章:

node.js - 有条件更新,取决于匹配的字段

javascript - JavaScript 对象参数中的 Node.js 字符串

mongodb - 在 MongoDB 中,如何使用对当前值进行操作的函数来更新嵌套文档的值?

node.js - 在嵌套数组的每个项目中重新映射ObjectId数组

MongoDB在列表列表中查找值

mongodb - MongoDb Doctrine Symfony 2 中的非规范化数据

MongoDB elemMatch 子文档

mongodb - 繁重的数学查询和 NoSQL 数据库

mongodb - $group by 8 条记录并进行聚合

MongoDB Setunion 和 Group by