MongoDB的简单使用说明

64 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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查询出来。

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

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