我需要查询MongoDB的字段数:名称,电话,电子邮件。
查询应支持"like"
语法:'%s%'
有什么更好的方法来执行它:
示例集合包含以下文档
{
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。
答案 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"
}