Mongo扩展安装地址:
https://windows.php.net/downloads/pecl/releases/mongo/
Mongodb扩展安装地址:
http://pecl.php.net/package/mongodb
mongodb扩展 连接插入数据
<?php
//连接
$mongodb = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$bulk = new MongoDB\Driver\BulkWrite;
$writedata = ['_id' => new MongoDB\BSON\ObjectID, 'name' => 'hello'];
$_id= $bulk->insert($writedata);
//往email_log数据库中的log集合中添加数据
$write = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $mongodb->executeBulkWrite('email_log.log', $bulk, $write);
mongo扩展 连接插入数据
<?php
$m = new MongoClient(); // 连接到mongodb
$db = $m->test; // 选择一个数据库
$collection = $db->runoob; // 选择集合
$document = array(
"title" => "MongoDB",
"description" => "database",
"likes" => 100,
"url" => "http://www.runoob.com/mongodb/",
"by", "菜鸟教程"
);
$collection->insert($document);
echo "数据插入成功";
?>
两者的区别
mongo 这个扩展已经废弃了,不过 bug 和 security 方面的问题还会继续修复,不支持PHP7
mongodb 支持PHP7,同时加入 MongoDB 新版本的特性支持
————————————————
1.查看phpinfo
注意本机的PHP版本、NTS还是TS、x86还是x64
选择相应的版本进行安装即可
MongoDB 下载
MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center/community
https://www.mongodb.com/download-center/ops-manager
- MongoDB for Windows 64-bit 适合 64 位的 Windows Server 2008 R2, Windows 7 , 及最新版本的 Window 系统。
- MongoDB for Windows 32-bit 适合 32 位的 Window 系统及最新的 Windows Vista。 32 位系统上 MongoDB 的数据库最大为 2GB。
- MongoDB for Windows 64-bit Legacy 适合 64 位的 Windows Vista, Windows Server 2003, 及 Windows Server 2008 。
根据你的系统下载 32 位或 64 位的 .msi 文件,下载后双击该文件,按操作提示安装即可。
安装过程中,你可以通过点击 "Custom(自定义)" 按钮来设置你的安装目录。
下一步安装 "install mongoDB compass" 不勾选(当然你也可以选择安装它,可能需要更久的安装时间),MongoDB Compass 是一个图形界面管理工具,我们可以在后面自己到官网下载安装,下载地址:https://www.mongodb.com/download-center/compass。
创建数据目录
MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。请注意,数据目录应该放在根目录下((如: C:\ 或者 D:\ 等 )。
在本教程中,我们已经在 C 盘安装了 mongodb,现在让我们创建一个 data 的目录然后在 data 目录里创建 db 目录。
c:\>cd c:\
c:\>mkdir data
c:\>cd data
c:\data>mkdir db
c:\data>cd db
c:\data\db>
你也可以通过 window 的资源管理器中创建这些目录,而不一定通过命令行。
命令行下运行 MongoDB 服务器
为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。
C:\mongodb\bin\mongod --dbpath c:\data\db
如果执行成功,会输出如下信息:
2015-09-25T15:54:09.212+0800 I CONTROL Hotfix KB2731284 or later update is not
installed, will zero-out data files
2015-09-25T15:54:09.229+0800 I JOURNAL [initandlisten] journal dir=c:\data\db\j
ournal
2015-09-25T15:54:09.237+0800 I JOURNAL [initandlisten] recover : no journal fil
es present, no recovery needed
2015-09-25T15:54:09.290+0800 I JOURNAL [durability] Durability thread started
2015-09-25T15:54:09.294+0800 I CONTROL [initandlisten] MongoDB starting : pid=2
488 port=27017 dbpath=c:\data\db 64-bit host=WIN-1VONBJOCE88
2015-09-25T15:54:09.296+0800 I CONTROL [initandlisten] targetMinOS: Windows 7/W
indows Server 2008 R2
2015-09-25T15:54:09.298+0800 I CONTROL [initandlisten] db version v3.0.6
……
连接MongoDB
我们可以在命令窗口中运行 mongo.exe 命令即可连接上 MongoDB,执行如下命令:
C:\mongodb\bin\mongo.exe
创建集合
创建集合的代码片段如下:
<?php
$m = new MongoClient(); // 连接
$db = $m->test; // 获取名称为 "test" 的数据库
$collection = $db->createCollection("runoob");
echo "集合创建成功";
?>
在mongoDB中使用 insert() 方法插入文档:
插入文档代码片段如下:
<?php
$m = new MongoClient(); // 连接到mongodb
$db = $m->test; // 选择一个数据库
$collection = $db->runoob; // 选择集合
$document = array(
"title" => "MongoDB",
"description" => "database",
"likes" => 100,
"url" => "http://www.runoob.com/mongodb/",
"by", "菜鸟教程"
);
$collection->insert($document);
echo "数据插入成功";
?>
执行以上程序,输出结果如下:
数据插入成功
查找文档
使用find() 方法来读取集合中的文档。
读取使用文档的代码片段如下:
<?php
$m = new MongoClient(); // 连接到mongodb
$db = $m->test; // 选择一个数据库
$collection = $db->runoob; // 选择集合
// 更新文档
$cursor = $collection->find();
// 循环显示文档标题
foreach ($cursor as $document) {
echo $document["title"] . "\n";
}
?>
执行以上程序,输出结果如下:
MongoDB
更新文档
使用 update() 方法来更新文档。
以下实例将更新文档中的标题为' MongoDB 教程', 代码片段如下:
<?php
$m = new MongoClient(); // 连接到mongodb
$db = $m->test; // 选择一个数据库
$collection = $db->runoob; // 选择集合
// 更新文档
$collection->update(array("title"=>"MongoDB"), array('$set'=>array("title"=>"MongoDB 教程")));
// 显示更新后的文档
$cursor = $collection->find();
// 循环显示文档标题
foreach ($cursor as $document) {
echo $document["title"] . "\n";
}
?>
执行以上程序,输出结果如下:
MongoDB 教程
然后我们在 mongo 客户端使用 db.runoob.find().pretty(); 命令查看数据:
删除文档
使用 remove() 方法来删除文档。
以下实例中我们将移除 'title' 为 'MongoDB 教程' 的一条数据记录。, 代码片段如下:
<?php
$m = new MongoClient(); // 连接到mongodb
$db = $m->test; // 选择一个数据库
$collection = $db->runoob; // 选择集合
// 移除文档
$collection->remove(array("title"=>"MongoDB 教程"), array("justOne" => true));
// 显示可用文档数据
$cursor = $collection->find();
foreach ($cursor as $document) {
echo $document["title"] . "\n";
}
?>
1、创建用户
db.createUser(
{
user:<name_string>, #字符串
pwd:<password_string>, #字符串
roles:[{role:<role_name>,db:<db_name>}] #数组+对象
}
)
user文档字段介绍:
user字段,为新用户的名字;
pwd字段,用户的密码;
cusomData字段,为任意内容,例如可以为用户全名介绍;
roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色;
在roles字段,可以指定内置角色和用户定义的角色。
Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
给admin添加一个root用户:
use admin
db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})
mongodb.conf文件中加入 auth=true
重启具有认证的mongodb数据库后登陆
/usr/local/mongodb/bin/mongo
use admin
db.auth("admin","123456")
返回1显示1则认证成功,也就是切换成功
也可以直接用账号密码登录:
/usr/local/mongodb/bin/mongo -uadmin -p123456 登陆
2、删除用户:
db.dropUser(<user_name>) 删除某个用户,接受字符串参数
示例:db.dropUser(“admin”)
db.dropAllUser() 删除当前库的所有用户
1 设置管理员账户
use admin
db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。 ‘userAdmin’代表用户管理身份,’AnyDatabase’ 代表可以管理任何数据库。
2 验证
db.auth("useradmin", "adminpassword")
如果返回1,则表示成功。
3 修改配置文件(注意缩进)
sudo vi /etc/mongod.conf
#security:
security:
authorization: enabled
4 重启mongodb
sudo service mongod restart
5 创建普通用户
进入mongodb,用第3步的 管理员账户登录,用该账户创建其他数据库管理员账号
+先进行管理员认证
use admin
db.auth("useradmin", "adminpassword")
+设置其他库的账号密码及权限
use yourdatabase
db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })
rote:dbOwner 代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限
db.createUser( { user:"root", pwd:"123456", roles:[{role:"root",db:"admin"}] } );