zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    多态的使用
    抽象类与具体类
    对象应该长什么样子
    方法的重载overload
    遵守合约:覆盖的规则
    Android 自定义Dialog
    less 之Extend 及 Extend all用法
    github常见错误整理!
    js获取元素宽高
    解决 Error: Access denied for user 'root'@'localhost' (using password: YES)
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/6505011.html
Copyright © 2011-2022 走看看