暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MongoDB的简单使用说明

程序员涛子 2021-04-18
395

安装

// 下载,注意下载对应的系统版本,否则安装会报错
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
* 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查询出来。

更多命令点击查看代码仓库,https://github.com/jenssegers/laravel-mongodb

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

文章转载自程序员涛子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论