php MongoDB driver 查询实例

       //是否只查mx
        $mx_on_switch = I("post.mx_on_switch");
        //mx模糊查询
        $mx_vague_check = I("post.mx_vague_check");
        //邮箱品牌
        $mail_brand = I("post.mail_brand");
        //智能客服品牌
        $contacttool_brand = I('post.contacttool_brand');
        //域名注册人
        $people = I("post.people");
        //注册机构
        $registrar = I("post.registrar");
        //是否只查标题
        $mx_switch_title = I("post.mx_switch_title");
        //网站标题
        $wwwtitle = I("post.wwwtitle");
        $province = I("post.province");

        $filter = [];
        if (!empty($mail_brand)) {
            $filter['mx.brand_id'] = intval($mail_brand);
        }
        if (!empty($contacttool_brand)) {
            $filter['contacttool.brand_id'] = intval($contacttool_brand);
        }
        if ($mx_switch_title == 20 || empty($province)) {
            $filter["wwwtitle"] = ['$ne' => 'null'];
        }
        //网站标题
        if (!empty($wwwtitle)) {
            $filter['wwwtitle'] = new MongoDBBSONRegex(".*{$wwwtitle}.*", '');
        }
        //只带mx的查询
        if ($mx_on_switch == 20 || empty($province)) {
            $filter["mx"] = ['$exists' => true];
        }
        //mx模糊查询
        if (!empty($mx_vague_check)) {
            $filter["mx.mx"] = new MongoDBBSONRegex(".*{$mx_vague_check}.*", '');
        }

        //如果没有传递省份
        if (empty($province)) {
            $province = "shandong";
        }
        try {
            $options_base = ['connectTimeoutMS' => 500000, 'socketTimeoutMS' => 500000];
            $manager = new MongoDBDriverManager(C('mongodb_auth_url'), $options_base);
            $coll = C('default_db') . '.' . $province;
            $options = [
                "skip" => $page,
                "limit" => $rows,
                'projection' => ['createdate' => 0,
                    'expiresdate' => 0,
                    'registrant_city' => 0,
                    'registrant_street' => 0,
                    'registrant_state' => 0,
                    'updatedate' => 0,
                    'whoisserver_id' => 0,
                    'registrar_name_id' => 0,
                    'id' => 0,
                ],
            ];
            //查询记录总的数量
            $commands = [
                'count' => $province,
                'query' => $filter
            ];
            $command = new MongoDBDriverCommand($commands);
            $cursor = $manager->executeCommand('mxmanage', $command);
            $info = $cursor->toArray();
            $count = $info[0]->n;
            $query = new MongoDBDriverQuery($filter, $options);
            $rows = $manager->executeQuery($coll, $query);
            $info = [];
            foreach ($rows as $document) {
                $doc = (array)$document;
                $doc['_id'] = (string)$doc['_id'];
                $doc['mail_brand_name'] = $doc['mx']->brand_name;
                $doc['mail_mx'] = $doc['mx']->mx ?: '';
                $doc['contacttool_brand_name'] = $doc['contacttool']->brand_name;
                $doc['mx_changetime'] = !$doc['mx_changetime'] ? '' : date('Y-m-d H:i', $doc['mx_changetime']);
                $doc['contacttool_changetime'] = !$doc['contacttool_changetime'] ? '' : date('Y-m-d H:i', $doc['contacttool_changetime']);
                unset($doc['mx']);
                unset($doc['contacttool']);
                $info[] = $doc;
            }
        } catch (MongoDBDriverException $e) {
            echo $e->getMessage(), "
";
            exit;
        }
        return json_encode(array("total" => $count, "rows" => $info));

查询实例  参考http://php.net/manual/en/book.mongodb.php

原文地址:https://www.cnblogs.com/timelesszhuang/p/6505011.html