• 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

  • 相关阅读:
    javaweb开发之解决全站乱码
    redis加入开机启动服务
    linux下安装memcache
    关于本地连接虚拟机(centos)里的mongodb失败问题
    oracle存储过程中返回一个程序集
    面向对象进阶(二)----------类的内置方法
    面向对象进阶(一)
    面向对象的三大特性之----------封装
    面向对象的三大特性之----------多态
    面向对象的三大特性之----------继承
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/6505011.html
Copyright © 2020-2023  润新知