mongodb中模糊查询有两种方式,一种是全文检索,即对字段建立索引,使用$text进行全文匹配;另一种是使用正则表达式。
在多次测试后,发现正则表达式好用些,这里就主要介绍正则表达式
MongoDB 可以使用 $regex 操作符或者双斜杠(/ /)来设置匹配字符串的正则表达式。
全文检索需要先对字段建立索引,而正则表达式可以直接使用,不需要做任何配置,相对而言更方便。
db.users.insert({
"name": "zhangsan,张三",
"friends": [
"lijiang",
"小明"
]
})
还可以插入多条数据
db.users.insertMany([
{
"name": "zhangsan,张三",
"friends": [
"lijiang",
"小明"
]
},
{
"name": "LiSi,李四",
"friends": [
"XiaoHong",
"小军"
]
},
{
"name": "王五,WangWu",
"friends": [
"大明",
"zhaoliu"
]
}
])
模糊查询(可支持中文)
使用 $regex
也可使用斜杠的方式:/ /
如果检索需要不区分大小写,我们可以设置 $options 为 $i。如果是斜杠的方式,则在最后一个斜杠后面加上字母i即可。
此外,不仅可以对value为字符串的值进行匹配,还可以对value为数组的内容进行匹配,如下:
在正则表示式中使用前缀表达式
加个^即可。如 /^a/ 表示匹配以a开头的值
$in和$nin操作符
$in表示包含
$nin表示不包含
注意:$nin右边的内容要写全,这里面不是模糊匹配!!不写全是查不到的