当前位置:Gxlcms > 数据库问题 > PHP操作MongoDB实例

PHP操作MongoDB实例

时间:2021-07-01 10:21:17 帮助过:4人阅读

# 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

1 2 # vim /usr/local/php/etc/php.ini extension = mongo . so

重启php-fpm生效

1 # /usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm.comf

php的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连接实例:

1 2 3 4 5 < ? 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的时间戳。

1 $ m -> getHosts ( ) ;

列出所有数据库,返回数据库名称、大小、是否为空以及总大小、ok状态。

1 $ m -> listDBs ( ) ;

选择数据库,返回数据库对象

1 2 3 $ db = $ m -> db_name ;$ db = $ m -> selectDB ( db_name ) ;

选择表(集合),返回文档集合对象

1 2 3 4 5 $ col = $ m -> selectCollection ( db_name , col_name ) ;$ col = $ m -> selectDB ( db_name ) -> selectCollection ( col_name ) ;$ col = $ m -> db_name -> col_name ;

列出所有集合,返回集合对象

1 $ col_list = $ db -> listCollections ( ) ;

获取当前选择的数据库名,返回数据库名

1 $ db_name = $ db -> __toString ( ) ;

删除当前数据库

1 $ db -> drop ( ) ;

设置slaveok状态(可读状态设置)

1 $ db -> setSlaveOkay ( true / false ) ;

获取slaveok当前状态

1 $ db -> getSlaveOkay ( ) ;

插入数据MongoCollection::insert(array $a,array $options)
array $a 要插入的数组
array $options 选项:safe 是否返回操作结果信息;fsync 是否直接插入到物理硬盘;w 写入份数;timeout 超时时间

1 2 3 4 5 < ? php $ coll = $ m ->

人气教程排行