MongoDB的简单使用说明

安装

1
2
3
4
5
// 下载,注意下载对应的系统版本,否则安装会报错
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.1.tgz
// 解压即可,无需编译安装
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.1.tgz
mv mongodb-linux-x86_64-rhel70-4.4.1 /usr/local/mongodb

启动服务

新建mongodb.conf(版本可能不一样,略有不同)

1
2
3
4
5
dbpath = /data/mongodb/data #数据文件存放目录  
logpath = /data/mongodb/log/mongodb.log #日志文件存放目录
port = 27000 #端口
fork = true #以守护程序的方式启用,即在后台运行
bind_ip=127.0.0.1
1
2
3
4
cd /usr/local/mongodb/

// 启动服务
bin/mongod -f ./mongodb.conf

新增用户

设置密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use admin;

db.createUser({user:"root",pwd:"666888",roles:["userAdminAnyDatabase"]});


use test;
db.createUser({
user: "test",
pwd: "123456",
roles: [{role: "readWrite",db: "hotel"}]
})

db.createUser(
{
user: "admin",
pwd: "5176567",
roles: [{role: "userAdminAnyDatabase", db: "admin"}]
}
)

role的说明

1
2
3
4
5
6
7
8
9
10
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

建议出root和admin,各个数据库使用自己独立的账号密码。

auth尝试一下,如果返回1,表示auth验证成功

1
db.auth('root', '666888')

常用命令

关闭mongo服务

1
2
use admin
db.shutdownServer()

清空当前数据库

1
2
use xxx
db.dropDatabase()

集成到Laravel

安装

composer require jenssegers/mongodb 3.6.x

低版本需要在config/app.php加入

1
Jenssegers\Mongodb\MongodbServiceProvider::class,

配置database.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGODB_HOST', '127.0.0.1'),
'port' => env('MONGODB_PORT', 27017),
'database' => env('MONGODB_DATABASE', 'test'),
'username' => env('MONGODB_USERNAME', 'test'),
'password' => env('MONGODB_PWD', ''),
'options' => [
// here you can pass more settings to the Mongo Driver Manager
// see https://www.php.net/manual/en/mongodb-driver-manager.construct.php under "Uri Options" for a list of complete parameters that you can use

'database' => env('MONGODB_AUTHENTICATION_DATABASE', 'hotel'), // required with Mongo 3+
],
],

Model定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
/**
* Author: 13sai
* Date: 2020/12/22
* Time: 15:08
*/

namespace App\Models;

use Jenssegers\Mongodb\Eloquent\Model;

class Product extends Model
{
protected $collection = 'products';

protected $connection = 'mongodb';

protected $guarded = ['id'];

}

使用:

1
2
3
4
5
6
7
$users = User::distinct('name')->get();

$users = User::whereIn('age', [16, 18, 20])->get();

$total = Product::count();

$price = Product::avg('price');

Eloquent ORM常用的命令均支持,用起来毫无违和感,select略有不同,会把_id查询出来。

更多命令点击查看代码仓库

大致也就这些了,赶紧使用起来吧!!!