背景:模糊查询,但所查询的字段为int型,但正则匹配的是字符串,导致无法查出结果
思路:可以先把所查询的字段转为string类型,再去查询
吐槽:国内关于mongodb的资料还是少,这个办法是在外网找到的
上代码吧,查询project_id以2开头的数据,
mongodb shell:
db.getCollection('project_recommend').find({
"$expr": {
"$regexMatch": {
"input": {"$toString": "$project_id"},
"regex": /^2/
}
}
})
php 代码:
$collectionRecommend = $mdb->selectCollection('project_recommend');
$where = [
'$expr' => [
'$regexMatch' => [
'input' => [
'$toString' => '$project_id'
],
'regex' => "^2"
]
]
];
$cursor = $collectionRecommend->find($where);
还有个小的坑:php代码中的regex不能带正则边界符,不然也查不出来