0

我在 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”,它也应该基于名字和姓氏来获取。上面的代码正在获取所有记录。另请注意,应保留其他搜索条件。

任何帮助将不胜感激。

4

0 回答 0