21.30 mongodb创建集合、数据管理
21.31 php的mongodb扩展
21.32 php的mongo扩展
21.30 mongodb创建集合、数据管理
创建集合
格式:db.createCollection(name,options)
1
2> db.createCollection("mycol", { capped : true, size : 6142800, max : 10000 } )
{ "ok" : 1 }
name
就是集合的名字,options
可选,用来配置集合的参数,参数如下capped true/false
(可选)如果为true,则启用封顶集合。封顶集合是固定大小的集合,当它达到其最大大小,会自动覆盖最早的条目。如果指定true,则也需要指定尺寸参数。autoindexID true/false
(可选)如果为true,自动创建索引_id字段的默认值是false。size
(可选)指定最大大小字节封顶集合。如果封顶如果是 true,那么你还需要指定这个字段。单位Bmax
(可选)指定封顶集合允许在文件的最大数量。
查看集合
格式:show tables 或者 show collections
1
2
3
4> show tables
mycol
> show collections
mycol
添加文档
格式:db.集合名.insert({key:value,...})
1
2> db.mycol1.insert({AccountID:1,UserName:"123",password:"123456"})
WriteResult({ "nInserted" : 1 }) ##如果集合不存在,直接插入数据,则mongodb会自动创建集合
更新文档
格式:db.mycol1.update({key:value},{"$set":{key:value}})
1
2> db.mycol1.update({"AccountID":1},{"$set":{"Age":20}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
查看所有文档
格式:db.集合名.find()
1
2> db.mycol1.find()
{ "_id" : ObjectId("5b7ec28cae8406dfc4ee5bb1"), "AccountID" : 1, "UserName" : "123", "password" : "123456" }
根据条件查询文档
格式:db.集合名.find({key:value})
1
2> db.mycol1.find({"password" : "123456"}) ##查询密码为123456的文档
{ "_id" : ObjectId("5b7ec28cae8406dfc4ee5bb1"), "AccountID" : 1, "UserName" : "123", "password" : "123456" }
根据条件删除文档
格式:db.集合名.remove({key:value})
1
2> db.mycol1.remove({AccountID:1}) ##删除AccountID是1的文档
WriteResult({ "nRemoved" : 1 })
删除该集合
格式:db.集合名.drop()
1
2
3
4
5> db.mycol1.drop()
true
> show tables ##mycol1集合没有了
mycol
查看所有集合的状态
格式:db.printCollectionStats()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17> db.printCollectionStats()
mycol
{
"ns" : "db1.mycol",
"size" : 80,
"count" : 1,
"avgObjSize" : 80,
"storageSize" : 16384,
"capped" : true,
"max" : 10000,
"maxSize" : 6142976,
"sleepCount" : 0,
"sleepMS" : 0,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
查看版本
格式:db.version()
1
2> db.version()
4.0.1
切换数据库 不存在就创建该库
格式:use 数据库
1
2> use db2
switched to db db2
列出所有数据库
格式:show dbs
1
2> show dbs
db1 0.000GB
查看当前库的信息
格式:db.stats()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16> db.stats()
{
"db" : "db1",
"collections" : 1,
"views" : 0,
"objects" : 1,
"avgObjSize" : 80,
"dataSize" : 80,
"storageSize" : 16384,
"numExtents" : 0,
"indexes" : 1,
"indexSize" : 16384,
"fsUsedSize" : 6458290176,
"fsTotalSize" : 19102957568,
"ok" : 1
}
删除当前库 使用root角色登录
格式:db.dropDatabase()
1
2
3
4> use db2
switched to db db2
> db.dropDatabase()
{ "ok" : 1 }
查看MongoDB服务器状态 使用root角色登录
格式:db.serverStatus()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17> db.serverStatus()
{
"host" : "kun03",
"version" : "4.0.1",
"process" : "mongod",
"pid" : NumberLong(1494),
"uptime" : 7621,
"uptimeMillis" : NumberLong(7620755),
"uptimeEstimate" : NumberLong(7620),
"localTime" : ISODate("2018-08-23T15:01:27.002Z"),
"asserts" : {
"regular" : 0,
"warning" : 0,
"msg" : 0,
"user" : 38,
"rollovers" : 0
},
21.31 PHP的mongodb扩展
php要连接MongoDB是需要安装模块的,和memcached,redis一样。但MongoDB的模块有两个,一个是mongodb.so,另一个是mongo.so。两个的区别是mongo.so是旧版本,只支持php5版本
。mongodb.so会逐步代替mongo.so。参考文档 https://docs.mongodb.com/ecosystem/drivers/php/
这里安装mongodb.so有两个途径,一是去官方下载源码包,另一种是去github上克隆mongodb的库到本地来下载。
1.官方下载源码包
步骤
1.进入src目录下载包并解压
1 | [root@kun03 src]# cd /usr/local/src/ |
2.进入mongodb目录并生成configure
1 | [root@kun03 src]# cd mongodb-1.3.0 |
3.初始化
1 | [root@kun03 mongodb-1.3.0]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config |
4.安装编译
1 | [root@kun03 mongodb-1.3.0]# make |
5.加载扩张模块
1 | [root@kun03 mongodb-1.3.0]# vim /usr/local/php-fpm/etc/php.ini |
6.查看是否加载成功
1 | [root@kun03 mongodb-1.3.0]# /usr/local/php-fpm/bin/php -m |grep mongodb |
7.重启php服务
1 | [root@kun03 mongodb-1.3.0]# service php-fpm restart |
2.使用GitHub的MongoDB库来下载
步骤
1.进入src目录克隆MongoDB仓库
1 | [root@kun03 mongodb-1.3.0]# cd /usr/local/src/ |
2.进入改仓库目录下
1 | [root@kun03 src]# cd mongo-php-driver/ |
3.更新模块
1 | [root@kun03 mongo-php-driver]# git submodule update --init |
后面和第一种方法的第二个步骤起一样
21.32 PHP的mongo扩展
步骤
1.进入src目录下载包并解压
1 | [root@kun02 mongo-php-driver]# cd /usr/local/src/ |
2.进入mongo目录并生成configure
1 | [root@kun02 src]# cd mongo-1.6.16 |
3.初始化
1 | [root@kun02 mongo-1.6.16]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config |
4.安装编译
1 | [root@kun02 mongo-1.6.16]# make |
5.加载扩张模块
1 | [root@kun02 mongo-1.6.16]# vim /usr/local/php/etc/php.ini |
6.查看是否加载成功
1 | [root@kun02 mongo-1.6.16]# /usr/local/php/bin/php -m |grep mongo |
由于是使用Apache因此不需要重启PHP服务
测试
编辑下面代码 下面代码中的函数只时候在mongo.so中测试。
参考文档 http://www.runoob.com/mongodb/mongodb-php.html1
2
3
4
5
6
7
8[root@kun02 mongo-1.6.16]# vim /var/www/test1.com/mongo.php
<?php
$m = new MongoClient(); // 连接
$db = $m->test; // 获取名称为 "test" 的数据库
$collection = $db->createCollection("runoob");
echo "集合创建成功";
?>
1 | [root@kun02 ~]# curl localhost/mongo.php |
进入mongo看看是否创建了runoob集合1
2
3
4
5
6[root@kun02 ~]# mongo
> use test
switched to db test
> show tables
runoob