开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 24 天,点击查看活动详情
MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
安装
// 下载,注意下载对应的系统版本,否则安装会报错
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()
清空当前数据库
use xxx
db.dropDatabase()
集成到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: 13sai
* 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查询出来。
大致也就这些了,赶紧使用起来吧!!!