扫一扫下方二维码,关注本站官方公众号
回复:2020加油
获取永久解锁本站全部文章的验证码

PHP Mongo扩展和Mongodb扩展 的区别 和安装-Go语言中文社区

PHP Mongo扩展和Mongodb扩展 的区别 和安装


Mongo扩展安装地址:

https://windows.php.net/downloads/pecl/releases/mongo/

Mongodb扩展安装地址:

http://pecl.php.net/package/mongodb

 

mongodb扩展 连接插入数据

<?php
//连接
$mongodb = new MongoDBDriverManager("mongodb://localhost:27017");  
 
$bulk = new MongoDBDriverBulkWrite;
$writedata = ['_id' => new MongoDBBSONObjectID, 'name' => 'hello'];
 
$_id= $bulk->insert($writedata);
 


 
//往email_log数据库中的log集合中添加数据
$write = new MongoDBDriverWriteConcern(MongoDBDriverWriteConcern::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:datadb>

你也可以通过 window 的资源管理器中创建这些目录,而不一定通过命令行。

 


命令行下运行 MongoDB 服务器

为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。

C:mongodbbinmongod --dbpath c:datadb

如果执行成功,会输出如下信息:

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:datadbj
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:datadb 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:mongodbbinmongo.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"}] } );

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_41380972/article/details/105814069
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-30 11:02
  • 阅读 ( 782 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群