laravel 8使用 mongoDB

参考网上资料安装mongoDB并在php.ini开启mongoDB扩展(通过phpinfo()确定是否安装完成)

composer命令:

composer require jenssegers/mongodb ^3.8 -vvv

在app/config/app.php文件中引入

'providers' => [
    Jenssegers\Mongodb\MongodbServiceProvider::class,
]
 
'aliases' => [
    'Mongo' => Jenssegers\Mongodb\MongodbServiceProvider::class,
]

在.env 文件中加入(test为数据库)

MONGODB_HOST=127.0.0.1
MONGODB_POST=27017
MONGODB_DB=test
DB_USERNAME=
DB_PASSWORD=

在数据库配置文件 config/database.php 的 connections 中加入

'mongodb' => [
            'driver'   => 'mongodb',
            'host'     => env('MONGODB_HOST', '127.0.0.1'),
            'port'     => env('MONGODB_POST', '27017'),
            'database' => env('MONGODB_DB', 'test'),
            'username' => env('MONGODB_USER', ''),
            'password' => env('MONGODB_PASSWORD', ''),
        ],

并且把默认的数据库配置

'default' => env('DB_CONNECTION', 'mysql'),

改成

'default' => env('DB_CONNECTION', 'mongodb'),

代码

Route::get('mongodb',[\App\Http\Controllers\Controller::class,'mongodb']);
function mongodb(){
        //选择使用one集合插入数据
        DB::insert([
            'name'  =>  'mongodb',
            'age'     =>   18
        ]);

        //查询所有数据
        $res = DB::collection('one')->get();
        dd($res);
    }

效果

 补充

如果没有修改默认的数据库配置为mongodb,则每次操作需要

DB::connection('mongodb')->...

模型操作

修改继承模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class One extends \Jenssegers\Mongodb\Eloquent\Model
{
    use HasFactory;

    //文档名
    protected $collection = 'one';
    //设置id
    protected $primaryKey = '_id';
    //无黑名单
    protected $guarded=[];
}

就可以这样使用

$arr=One::get();
dd($arr);

最后补充一点mongoDB的概念:

nosql 数据库

端口号:27017

旨在为 WEB 应用提供可扩展的高性能数据存储解决方案

是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的

将数据存储为一个文档,数据结构由键值(key=>value)对组成

数据模型结构:BSON(与JSON类似)

和MySQL结构对比:

MySQL:数据库,数据表,记录行,字段,索引,主键(id)

mongoDB:数据库,集合,文档,域,索引,主键(_id)

MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

使用原因:

读写快(nosql ,BSON,key=>value)

易伸缩,自动故障转移。易伸缩指的是提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器。自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移

数据模型(BSON)因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如博客系统中能把“评论”直接怼到“文章“的文档中,而不必像myqsl一样创建三张表来描述这样的关系

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值