我需要查询 MongoDB 的字段数:姓名、电话、电子邮件。
查询应该支持 "like"
语法:'%s%'
执行它的更好方法是什么:
- 用$or查询字段数
- 使用上述字段的值和该字段的多键索引创建数组字段
示例集合包含以下文档
{
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/