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 \MongoDB\BSON\Regex(".*{$wwwtitle}.*", ''); } //只带mx的查询 if ($mx_on_switch == 20 || empty($province)) { $filter["mx"] = ['$exists' => true]; } //mx模糊查询 if (!empty($mx_vague_check)) { $filter["mx.mx"] = new \MongoDB\BSON\Regex(".*{$mx_vague_check}.*", ''); } //如果没有传递省份 if (empty($province)) { $province = "shandong"; } try { $options_base = ['connectTimeoutMS' => 500000, 'socketTimeoutMS' => 500000]; $manager = new \MongoDB\Driver\Manager(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 \MongoDB\Driver\Command($commands); $cursor = $manager->executeCommand('mxmanage', $command); $info = $cursor->toArray(); $count = $info[0]->n; $query = new \MongoDB\Driver\Query($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 (\MongoDB\Driver\Exception $e) { echo $e->getMessage(), "\n"; exit; } return json_encode(array("total" => $count, "rows" => $info));
没有无缘无故的荣耀
赞助我写出更好的博客
赞助我写出更好的博客