安装 // 下载,注意下载对应的系统版本,否则安装会报错 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(版本可能不一样,略有不同)
dbpath = /data/mongodb/data #数据文件存放目录 logpath = /data/mongodb/log/mongodb.log #日志文件存放目录 port = 27000 #端口 fork = true #以守护程序的方式启用,即在后台运行 bind_ip=127.0.0.1
cd /usr/local/mongodb/ // 启动服务 bin/mongod -f ./mongodb.conf
新增用户 设置密码
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的说明
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验证成功
db.auth('root', '666888')
常用命令 关闭mongo服务
use admin db.shutdownServer()
清空当前数据库
集成到Laravel 安装
composer require jenssegers/mongodb 3.6.x
低版本需要在config/app.php加入
Jenssegers\Mongodb\MongodbServiceProvider::class,
配置database.php
'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定义:
<?php /** * Author: puresai * 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']; }
使用:
$users = User::distinct('name')->get(); $users = User::whereIn('age', [16, 18, 20])->get(); $total = Product::count(); $price = Product::avg('price');
Eloquent ORM常用的命令均支持,用起来毫无违和感,select略有不同,会把_id查询出来。
更多命令点击查看代码仓库
大致也就这些了,赶紧使用起来吧!!!