//是否只查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));

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

php MongoDB driver 查询实例的更多相关文章

  1. C# mongoDB Driver 使用对象方式查询语法大全

    #region 查询方法 /// <summary> /// 获取单个对象 /// </summary> /// <typeparam name="T" ...

  2. MongoDB Driver 简单的CURD

    c#中我们可以使用MongoDB.Driver驱动进行对MongoDB数据库的增删改查. 首先需要在NuGet中安装驱动 安装完毕后会发现会有三个引用 其中 MongoDB.Driver和MongoD ...

  3. c# MongoDB Driver 官方教程翻译

    先贴官方文档地址:http://mongodb.github.io/mongo-csharp-driver/2.5/getting_started/quick_tour/ 安装部分很简单,nuget搜 ...

  4. MongoDB入门及 c# .netcore客户端MongoDB.Driver使用

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系 ...

  5. MongoDB 模糊查询,及性能测试

    var mongodb = new MongoClient("mongodb://127.0.0.1:27017");//MongoServer.Create();//创建链接 v ...

  6. mongoDB高级查询$type4array使用解析

    今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...

  7. 基于MongoDB.Driver的扩展

    由于MongoDB.Driver中的Find方法也支持表达式写法,结合[通用查询设计思想]这篇文章中的查询思想,个人基于MongoDB扩展了一些常用的方法. 首先我们从常用的查询开始,由于MongoD ...

  8. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)

    这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...

  9. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)

    梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...

随机推荐

  1. Launch 启动全屏 隐藏上方状态栏

    1:statusBar字体为白色 在plist里面设置View controller-based status bar appearance 为 NO:设置statusBarStyle 为 UISta ...

  2. 奇怪吸引子---FourWing

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  3. 第十八章 dubbo-monitor计数监控

    监控总体图: 红色:监控中心 -  dubbo-simple-monitor 黄色:provider 蓝色:consumer 统计总体流程: MonitorFilter向DubboMonitor发送数 ...

  4. XMPP使用简介--登录

    在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互 ...

  5. 微信小程序 多个视频播放器

    大致思路就是,wx:for="{{ list }}"下两个view,一个视频video,另一个封面image(客户需求,要可以自定义封面).主要控制变量是playIndex,当点击 ...

  6. Spark机器学习(6):决策树算法

    1. 决策树基本知识 决策树就是通过一系列规则对数据进行分类的一种算法,可以分为分类树和回归树两类,分类树处理离散变量的,回归树是处理连续变量. 样本一般都有很多个特征,有的特征对分类起很大的作用,有 ...

  7. Swift Precondition 预处理

    前言 precondition 和 assert 的格式类似,也是动态的,precondition 会造成程序的提前终止并抛出错误信息. 1.Precondition precondition 在一般 ...

  8. Docker基于已有的镜像制新的镜像-Docker for Web Developers(3)

    1.根据运行的容器制作镜像 #查看所有的容器 docker ps #暂停当前容器 docker pause COTNAINER-ID #将容器运行当前状态提交 docker commit COTNAI ...

  9. .NET+MVC+ORACLE存储分页查询一后端实现

    MemberController:public ActionResult UserList() { UserBll userBll = new UserBll(); string keyWords = ...

  10. Asp.Net EF查看生成sql(MiniProfiler)

    查看ef生成的sql有很多种方法,这里介绍两种几种的方法 方法1:浏览器直接方法/Home/getsql直接查看sql //方法1:浏览器直接方法/Home/getsql直接查看sql public ...