PHP操作MongoDB实例 --- ttlsa教程系列之mongodb(十一)
2014-03-23 00:00
781 查看
PHP的mongodb扩展安装
@localhost mongodb://user:password@localhost/database mongodb://example1.com:27017,example2.com:27017 mongodb://localhost,localhost:27018,localhost:27019 mongodb://host1,host2,host3/?slaveOk=true mongodb://localhost/?safe=true mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000 mongodb://rs1.example.com:27017,rs2.example.com:27017/?replicaSet=myReplSetName mongodb://localhost/?journal=true&w=majority&wTimeoutMS=20000 具体含义参见《
ttlsa教程系列之mongodb—(一)mongodb介绍》 http://www.ttlsa.com/html/1594.html PHP连接实例:
PHP操作MongoDB实例 http://www.ttlsa.com/html/2288.html
# https://github.com/mongodb/mongo-php-driver/archive/master.zip # unzip master.zip # /usr/local/php/bin/phpize # ./config --with-php-config=/usr/local/php/bin/php-config # make # make install将mongo.so添加到php.ini
# vim /usr/local/php/etc/php.ini extension = mongo.so重启php-fpm生效
# /usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm.comfphp的mongodb扩展,提供了4个核心类接口 1). 针对mongodb的连接操作类MongoClient http://www.php.net/manual/zh/class.mongoclient.php 2). 针对mongodb的数据库操作类MongoDB http://www.php.net/manual/zh/class.mongodb.php 3). 针对mongodb的集合操作类MongoCollection http://www.php.net/manual/zh/class.mongocollection.php 4). 针对mongodb的查询结果集(游标)操作类MongoCursor http://www.php.net/manual/zh/class.mongocursor.php 连接MongoDB mongodb驱动连接格式为:mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]],如: mongodb://localhost mongodb://user:password
@localhost mongodb://user:password@localhost/database mongodb://example1.com:27017,example2.com:27017 mongodb://localhost,localhost:27018,localhost:27019 mongodb://host1,host2,host3/?slaveOk=true mongodb://localhost/?safe=true mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000 mongodb://rs1.example.com:27017,rs2.example.com:27017/?replicaSet=myReplSetName mongodb://localhost/?journal=true&w=majority&wTimeoutMS=20000 具体含义参见《
ttlsa教程系列之mongodb—(一)mongodb介绍》 http://www.ttlsa.com/html/1594.html PHP连接实例:
<?php $m = new MongoClient("mongodb://localhost/?journal=true&w=majority&wTimeoutMS=20000"); $m = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017/?replicaSet=myReplSetName")); $m = new MongoClient("mongodb://rs1.example.com:27017", array("replicaSet" => "myReplSetName")); $m = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017", array("replicaSet" => "myReplSetName","wTimeoutMS"=>20000));在连接到复制集时,用它来判断哪台是primary。返回主机名称、端口号、健康程度、状态(1-primary,2-secondary,0-other)、ping耗时、前一次ping的时间戳。
$m->getHosts();列出所有数据库,返回数据库名称、大小、是否为空以及总大小、ok状态。
$m->listDBs();选择数据库,返回数据库对象
$db = $m->db_name; 或 $db = $m->selectDB(db_name);选择表(集合),返回文档集合对象
$col = $m->selectCollection(db_name, col_name); 或 $col = $m->selectDB(db_name)->selectCollection(col_name); 或 $col = $m->db_name->col_name;列出所有集合,返回集合对象
$col_list = $db->listCollections();获取当前选择的数据库名,返回数据库名
$db_name = $db->__toString();删除当前数据库
$db->drop();设置slaveok状态(可读状态设置)
$db->setSlaveOkay(true/false);获取slaveok当前状态
$db->getSlaveOkay();插入数据MongoCollection::insert(array $a,array $options) array $a 要插入的数组 array $options 选项:safe 是否返回操作结果信息;fsync 是否直接插入到物理硬盘;w 写入份数;timeout 超时时间
<?php $coll = $m->db_name->col_name; $a = array(’website'=>’www.ttlsa.com'); $options = array(’safe’=>true); $rs = $coll->insert($a,$options); $rs为数组,包含操作信息删除集合中的记录MongoCollection::remove(array $criteria,array $options) array $criteria 条件 array $options 选项: safe 是否返回操作结果; fsync 是否是直接影响到物理硬盘; justOne 是否只影响一条记录
<?php $coll = $m->db_name->col_name; $c = array(’website'=>'www.ttlsa.com',’hit’=>array(’$lt’=>100)); $options = array(’safe’=>true); $rs = $coll->remove($c,$options); $rs为数组,包含操作信息更新集合中的记录MongoCollection::update(array $criceria,array $newobj,array $options) array $criteria 条件 array $newobj 要更新的内容 array $options 选项: safe 是否返回操作结果; fsync 是否是直接影响到物理硬盘; upsert 是否没有匹配数据就添加一条新的; multiple 是否影响所有符合条件的记录,默认只影响一条
<?php $coll = $m->db_name->coll_name; $c = array(’uid'=>888,’login_count’=>array(’$lt’=>100)); $newobj = array(’vip'=>’1',’score'=>’10000'); $options = array(’safe’=>true,’multiple’=>true); $rs = $coll->remove($c,$newobj,$options); $rs为数组,包含操作信息查询集合获取单条记录MongoCollection::findOne(array $query,array $fields) array $query 条件 array $fields 要获得的字段
<?php $coll = $m->db_name->col_name; $query = array(’score’=>array(’$lt’=>10000)); $fields = array(’uid'=>true,’vip'=>true); $rs = $coll->findOne($query,$fields); 返回array或null获取多条记录MongoCollection::find(array $query,array $fields) array $query 条件 array $fields 要获得的字段
<?php $coll = $m->db_name->col_name; $query = array(’s’=>array(’$lt’=>100)); $query = array(’score’=>array(’$lt’=>10000)); $fields = array(’uid'=>true,’vip'=>true); $rs = $coll->find($query,$fields); 返回游标对象MongoCursor。获取查询结果数量
$cursor = $coll->find(); $num = $cursor->count();选定列MongoCursor::fields
$cursor->fields(array(column_name1 => true, column_name2 => false)); 或 $cursor = $coll->find()->fields(array(column_name1 => true, column_name2 => false));分页
$cursor = $coll->find()->limit(30)->skip(0);排序MongoCursor::sort
$cursor = $coll->find()->sort(array(column_name1 => -1, column_name2 => 1));取查询结果
$cursor = $coll->find($query,$fields); while($cursor->hasNext()){ $r = $cursor->getNext(); var_dump($r); } 或者 $cursor = $coll->find($query,$fields); $r = array(); foreache($cursor as $k=>$v){ var_dump($v); $r[] = $v; } 或者 $cursor = $coll->find($query,$fields); $array= iterator_to_array($cursor);快照MongoCursor::snapshot 保证一致性。在做find()操作时,获得$cursor之后,这个游标是动态的,在循环取结果过程中,如果有其他连接来更改符合条件的记录时,这个$cursor也会跟着变化的。$cursor->snapshot();之后,再插入或删除符合条件的记录时,获取的结果集将不再变化。如果是小于1M的结果集会自动被当作snapshot来处理。 如果要获取$cursor之后不变的结果需要这么做:
$cursor = $coll->find($query,$fields); $cursor->snapshot();snapshot对findOne无效。 如需转载请注明出处:
PHP操作MongoDB实例 http://www.ttlsa.com/html/2288.html
相关文章推荐
- MongoDB系列教程(六):java操作mongodb实例
- MongoDB系列教程(六):java操作mongodb实例
- MongoDB教程之查询操作实例
- MongoDB教程之查询操作实例
- MongoDB与PHP的扩展进行添加、修改、查询、删除等操作基础教程
- ttlsa教程系列之mongodb——(三)mongodb的增删查改
- ttlsa教程系列之mongodb——(四)mongodb索引&explain&profile
- MongoDB教程之数据操作实例
- MongoDB基础教程系列--第二篇 MongoDB基本操作(一)
- PHP网站开发实例教程之知识点归纳2(操作数据库)
- PHP操作MongoDB实例
- php操作mongoDB实例分析
- MongoDB与PHP的扩展进行添加、修改、查询、删除等操作基础教程
- PHP的Yii框架中使用数据库的配置和SQL操作实例教程
- PHP 操作Mongodb 实例
- MongoDB入门教程之C#驱动操作实例
- MongoDB基础教程系列--第三篇 MongoDB基本操作(二)
- 使用PHPExcel操作Excel用法实例分析_PHP教程
- (LINQ 学习系列)(7)Linq教程实例: LINQ多表关联操作
- ttlsa教程系列之mongodb—---(二)mongodb安装