PHP 从 MongoDb 中查询数据

   2016-10-31 0
核心提示:一、软件环境(版本非必须)php v5.6扩展:MongoDBnginx v1.11mongodb v3.2note:必须安装MongoDB扩展二、连接$client = new MongoClient($server, $option);$server变量是个字符串,描述要连接的服务器mongodb://[username:password@]host1[:port1][,host2[:por

一、软件环境(版本非必须)

  • php v5.6
    • 扩展:MongoDB
  • nginx v1.11
  • mongodb v3.2

note: 必须安装MongoDB扩展

二、连接

$client = new MongoClient($server, $option);

$server 变量是个字符串,描述要连接的服务器

mongodb://[username:password@]host1[:port1][,host2[:port2:],...]/db

其中必要的是:

  1. username 数据库用户名
  2. password 数据库密码
  3. host 服务器地址
  4. port 数据库监听端口

三、选表(集合)

  1. 选择数据库
  2. 选择集合
$db = $client->{$db_name};

返回MongoDB类 类文档传送门

$collection = $db->{$collection_name};

返回MongoCollection类 类文档传送门

四、查询数据

$cursor = $collection->find($filter);

返回MongoCursor类 类文档传送门

1. $filter参数

mongoshell find函数参数使用:传送门

php代码编写

// 查询值大于value的文档
$filter[$gtKey] = array('$gt' => $value);
// regexKey模糊查询
$filter[$regexKey] = new MongoRegex('/'.$regexValue.'/');

$collection->find($filter);

注意:

  1. 模糊查询需要使用MongoRegex类来使用,否则不识别
  2. 比较大小时,$value 的值需要与mongodb中存储的类型一致

2. 利用MongoCursor进行分页等操作

// 返回MongoCursor,可以利用MongoCursor的方法遍历数据
// 或者使用iterator_to_array($cursor)转换成数组
$cursor = $cursor
    ->sort(array($field=>'-1 or 1')) // 1是正序,-1是反序
    ->skip($start) // 数据起始位置
    ->limit($size); // 数据结束位置为$start+$size
    
// 返回int型数值
$count = $cursor
    ->find($filter)
    ->count();
    
$data = iterator_to_array($cursor)

不再讲解如何使用MongoCursor遍历数据

五、总结

使用php连接MongoDB查询数据总体来说非常简单。连接、根据条件查询、分页,三步搞定。

注意事项:

  • 使用单例模式获取MongoDB实例
  • 模糊查询需要借助MongoRegex类
  • 操作完成要** 关闭连接 **
 
标签: MongoDB PHP
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • TypeScript封装统一操作Mysql Mongodb Mssql的
    /*功能:定义一个操作数据库的库支持 Mysql MssqlMongoDb要求1:Mysql MsSqlMongoDb功能一样都有 addupdatedeleteget方法注意:约束统一的规范、以及代码重用解决方案:需要约束规范所以要定义接口 ,需要代码重用所以用到泛型1、接口:在面向对象的编程中,
    02-09
  • nodejs和mongodb实践 node.js+mongodb
    nodejs和mongodb实践 node.js+mongodb
        首先,当然是都安装了nodejs 和mongodb了。这必须是前提条件。    现在我们要用nodejs连接mongodb数据库了。我这里只是一个非常非常简单是实践,初学嘛。更深入的学习之后,我会仔细写笔记记录的。自己走过的弯路,遇到的问题,肯定有价值的。好了,
    02-09
  • nodejs + mongodb实现模糊查询与全文搜索
    nodejs + mongodb实现模糊查询与全文搜索
     mongodb中的查询条件   关键字说明$or或关系$nor或关系取反$gt大于$gte大于等于$lt小于$lte小于等于$ne不等于$in在多个值范围内$nin不在多个值范围内$all匹配数组中多个值$regex正则,用于模糊查询$size匹配数组大小$maxDistance范围查询,距离(基于LBS
    02-09
  • nodejs连接mongodb(密码)
    const MongoClient = require('mongodb').MongoClient;const url = 'mongodb://user:password@localhost:27017/?authMechanism=SCRAM-SHA-1authSource=database';// Database Nameconst dbName = 'aaaa';// Create a new MongoClientconst op
    02-09
  • nodejs操作MongoDB数据库 MongoDB增、删、改、
    nodejs、MongoDB相关介绍请自行了解。使用环境"node": "^10.16.0""mongodb": "^3.6.0"操作流程其实很简单,如果想对数据库进行操作,肯定要先连接数据库吧,连接完数据库肯定要找要操作的数据表吧,找到数据表了,是不是就可以对数据表进行增、删、改、查了!
    02-09
  • koa 基础(二十一)nodejs 操作mongodb数据库 --- 查询数据
    koa 基础(二十一)nodejs 操作mongodb数据库 -
    1.app.js/** * nodejs 操作mongodb数据库 * 1.安装 操作mongodb * cnpm install mongodb --save * 2.引入 mongodb 下面的 MongoClient * var MongoClient = require('mongodb').MongoClient; * 3.定义数据库连接的地址 以及配置数据库 * koa 数据库的名称 * v
    02-09
  • Nodejs怎样在服务端写定时脚本,自动备份MongoDB
    注意:mongod服务需提前开启安装模块 npm install node-schedule -S使用方法const schedule = require('node-schedule');//引入定时任务模块function scheduleCronstyle(){schedule.scheduleJob('10 * * * * *', function(){console.log('scheduleCronstyle:'
    02-09
  • nodejs链接mysql nodejs链接mongodb数据库
    使用mysql连接池:1.安装mysql支持npm install mysql2.安装node.js的mysqlpool模块npm install -g node-mysql //-g表全局3.直连mysqlvar mysql= require('mysql');//调用MySQL模块//创建一个connectionvar connection = mysql.createConnection({host: 'localh
    02-09
  • C#操作mongodb cctv5体育节目表
    // MongoDB连接串,以[mongodb://]开头。这里,我们连接的是本机的服务string connectionString = "mongodb://192.168.1.170";// 连接到一个MongoServer上MongoServer server = MongoServer.Create(connectionString);MongoDatabase db = server.GetDatabase(
    02-09
  • MongoDB官方C#驱动中查询条件Query用法
    Query.All("name", "a", "b");//通过多个元素来匹配数组 Query.And(Query.EQ("name", "a"), Query.EQ("title", "t"));//同时满足多个条件 Query.EQ("name", "a");//等于 Query.Exists("type"
    02-09
点击排行