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));
查询实例 参考http://php.net/manual/en/book.mongodb.php
php MongoDB driver 查询实例的更多相关文章
- C# mongoDB Driver 使用对象方式查询语法大全
#region 查询方法 /// <summary> /// 获取单个对象 /// </summary> /// <typeparam name="T" ...
- MongoDB Driver 简单的CURD
c#中我们可以使用MongoDB.Driver驱动进行对MongoDB数据库的增删改查. 首先需要在NuGet中安装驱动 安装完毕后会发现会有三个引用 其中 MongoDB.Driver和MongoD ...
- c# MongoDB Driver 官方教程翻译
先贴官方文档地址:http://mongodb.github.io/mongo-csharp-driver/2.5/getting_started/quick_tour/ 安装部分很简单,nuget搜 ...
- MongoDB入门及 c# .netcore客户端MongoDB.Driver使用
MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系 ...
- MongoDB 模糊查询,及性能测试
var mongodb = new MongoClient("mongodb://127.0.0.1:27017");//MongoServer.Create();//创建链接 v ...
- mongoDB高级查询$type4array使用解析
今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...
- 基于MongoDB.Driver的扩展
由于MongoDB.Driver中的Find方法也支持表达式写法,结合[通用查询设计思想]这篇文章中的查询思想,个人基于MongoDB扩展了一些常用的方法. 首先我们从常用的查询开始,由于MongoD ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)
这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)
梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...
随机推荐
- Voltage Level-Shifter Output Waveform
http://www.cypress.com/knowledge-base-article/interfacing-sram-jtag-signals-using-voltage-level-shif ...
- AngularJS中页面呈现html代码段
如何在页面呈现一段html代码段呢? 在textarea中我们这样写: <textarea name="" id="" cols="30&quo ...
- electron实现类似QQ来新消息时的闪烁与任务栏窗口提醒
公司项目有一款带即时聊天.群组功能的APP,因为要给客服人员使用,需要开发PC版本.之前使用C#开发过一个PC版本,但是C#的UI这一块支持的不太好,而且升级比较麻烦,我就牵头基于Electron去实 ...
- Spring AOP项目应用——方法入参校验 & 日志横切
转载:https://blog.csdn.net/Daybreak1209/article/details/80591566 应用一:方法入参校验 由于系统多个方法入参均对外封装了统一的Dto,其中D ...
- JS中的HTML片段
经常在js里面写一些html模板,但是由于语法不同,没有办法啊直接将html黏贴在js中. var html = "<!DOCTYPE html>"+ "&l ...
- How to measure IOPS for VMware
http://blog.synology.com/blog/?p=2225 Executive SummaryThis article, intended towards IT Professiona ...
- 单片机成长之路(51基础篇) - 017 C51中data,idata,xdata,pdata的区别(转)
从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的 ...
- 谈谈MySQL的do语句
[select在某些场景下的不足] 比如说我们想让MySQL暂停5秒.那么可以这样写 ); +----------+ ) | +----------+ | +----------+ row in se ...
- Docker 网络管理
网络模式 容器网络访问原理 桥接宿主机网络和配置固定IP地址 Docker 支持五种网络模式: 1.网络模式: --net 1.1 bridge 默认网络,Docker启动后默认创建一个docke ...
- Nginx 限制访问速率
本文测试的nginx版本为nginx version: nginx/1.12.2 Nginx 提供了 limit_rate 和limit_rate_after,举个例子来说明一下在需要限速的站点 se ...