查询mongodb与"喜欢"在田地数量上

时间:2015-10-25 14:43:33

标签: mongodb mongodb-query

我需要查询MongoDB的字段数:名称,电话,电子邮件。 查询应支持"like"语法:'%s%' 有什么更好的方法来执行它:

  1. 使用$或
  2. 查询字段数
  3. 使用上述字段的值和此字段上的多键索引创建数组字段
  4. 示例集合包含以下文档

    {
        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 个答案:

答案 0 :(得分:1)

最佳使用搜索模式创建 RegExp 对象,并将其与引用所有三个字段的$或表达式一起使用。像

这样的东西
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"
}