我在 mongo db 集合 studentTbl 中有三个字段:
名
中间名字
姓
我在 php 应用程序中使用 mongo db 创建搜索模块并尝试了以下代码行
$query = array('$or' => array(
array("registration_temp_perm_no" => new MongoRegex("/$arg/i")),
array("roll_no" => new MongoRegex("/$arg/i")),
array(
array(
'$project' => array(
'fullname' => array('$concat' => array('$first_name', ' ', '$last_name')),
)
),
array(
'$match' => array(
'fullname' => array('$regex' => $arg, '$options' => 'i'),
)
)
),
array(
array(
'$project' => array(
'fullname' => array('$concat' => array('$first_name', ' ', '$middle_name')),
)
),
array(
'$match' => array(
'fullname' => array('$regex' => $arg, '$options' => 'i'),
)
)
),
array("first_name" => new MongoRegex("/$arg/i")),
array("middle_name" => new MongoRegex("/$arg/i")),
array("last_name" => new MongoRegex("/$arg/i")),
array("email" => new MongoRegex("/$arg/i")),
array("guardian_name" => new MongoRegex("/$arg/i")),
array("phone1" => new MongoRegex("/$arg/i")),
array("dob" => new MongoRegex("/$arg/i")),
)
);
如果 studentTbl 中有一个包含以下详细信息的文档
first_name :“Pooja”
middle_name:“马哈维尔”
姓氏:“夏尔马”
现在,如果我们在 $args 中给出“Pooja”,它应该获取所有名为“pooja”的学生,如果我们在 $args 中给出“sharma”,它应该获取所有名为 sharma 的学生。如果 $args 包含“poo”,它应该获取所有名称包含“poo”的学生,无论是在结尾还是开头或中间,比如“poonam”或“tapoo”等,如果给出了全名,那么它应该相应地获取,如果$args 包含“pooja sharma”,它也应该基于名字和姓氏来获取。上面的代码正在获取所有记录。另请注意,应保留其他搜索条件。
任何帮助将不胜感激。