安装

MongoDB的安装就不写了,菜鸟教程上都有,到官网下载安装包(需要注册),点击安装就行,不过中途有一步骤的时候不需要点击 install mongoDB compass 这个是界面管理工具,很慢,后期可以自己下载,
image.png
另外,目录中不能包含中文,如果提示2502/2503报错的时候需要用其他方式安装
以管理员身份启动命令行窗口(输入CMD直接直接启动,不是管理员身份),输入msiexec /package “你安装程序包的路径”(注意引号前的空格),回车,开始安装。
image.png

启动

启动的话,用命令提示符(使用管理员权限打开)需要进到安装目录的bin目录下执行启动命令

  1. C:\mongodb\bin\mongod --dbpath c:\data\db
  2. 或者
  3. C:\mongodb\bin\mongod --dbpath=D:\Mongodb\data --port=30000

启动服务后面可以跟许多参数,
–port :指定服务端口号,默认端口27017
–logpath:指定MongoDB日志文件,注意是指定文件不是目录
–logappend:使用追加的方式写日志
–dbpath:指定数据库路径(必须已经存在文件)
–directoryperdb:设置每个数据库将被保存在一个单独的目录
一般不报错,展示一些信息,就是开启了,但是窗口不能关闭,否则会停掉服务

连接MongoDB

MongoDB安装之后,会有一个可以连接,查询的管理后台,类似shell
进入到安装目录bin文件

C:\mongodb\bin\mongo.exe

image.png
默认进入的是test文档(数据库)在这可以进行增删改查操作

> db
test
> db.runoob.insert({x:10})
WriteResult({ "nInserted" : 1 })
> db.runoob.find()
{ "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 }
>

php连接MongoDB

首选需要php的版本,php5 或者php7,两者都需要安装扩展,就不写 了,网上找,phpstudy可以直接选就可以自动添加扩展
php5跟php7连接MongoDB的方式不一样,
php5
直接new就可以,可以直接操作,用MongoClient ,很方便直接

$connection = new MongoClient ( "mongodb://mongos1.example.com:27017" ));

$db = $connection -> dbname -> runoob; //选择数据库 -> 选择集合

$db->find(); //查找集合所有数据

$db->findOne();//查找一条数据

$db->find(array(), array("a" => 1, "b" => 1)); // 返回a,b字段

$db->find(array("age" => 33)); //查找where age=33 的数据

php7
比较麻烦,需要连接,操作收集,最后执行,能不能用php5的方法没试验过

//连接 
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

/**-----------读写类,数据库的增、删、改都要先靠该类来实现-----------**/
$bulk = new MongoDB\Driver\BulkWrite;
//添加的数据
$document = ['_id'=>'1','title' => '主键是谁的'];
//添加数据,但是并没有执行,类似于预执行
$_id= $bulk->insert($document);
//这个是个对mongodb的写入性能、以及确保数据一致性的控制设置,可以不用省略
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
//执行添加操作
$result = $manager->executeBulkWrite('test.runoob', $bulk, $writeConcern);

/**-----------查询-----------**/
$filter = array();
$filter = ['x' => 10];
$options = [
    'projection' => ['_id' => 0],
     'sort' => ['x' => -1],
];

// 查询数据
$query = new MongoDB\Driver\Query($filter);
$cursor = $manager->executeQuery('test.runoob', $query);
foreach ($cursor as $document) {
  //对象
     print_r($document);
}
//toArray方法,就能将结果从对象转换成数组,虽然其中还是会包含对象
$data=$cursor->toArray();

类解释

Driver\Manager :入口文件,一般都要先实例化该类
Driver\BulkWrite :读写类,数据库的增、删、改都要先靠该类来实现,收集操作,预执行
Driver\WriteConcern:这个是个对mongodb的写入性能、以及确保数据一致性的控制设置,非常重要的一个类(有许多参数选项)
Driver\Query :查询类,MongoDB支持丰富的查询方式,所以单独拿出来组建了一个类
BSON\ObjectID :MongoDB默认创建的索引是_id,在添加的时候可以指定_id,给类就是可以创建一个指定内容的_id,获取一个_id索引id

使用顺序是
首先实例化Manager 类 (Driver\Manager ):连接MongoDB
增删改操作
额外实例化 收集操作类 (Driver\BulkWrite):预执行,收集操作
中途可以调用 安全类 (Driver\WriteConcern)保证数据一致的,可以省略
调用Manager 类的executeBulkWrite() 执行语句
查询操作
额外实例化 查询类 (Driver\Query):组合成查询
调用Manager 类的executeQuery() 执行查询