[MongoDB] Centos7.9 安装mongo

407 阅读1分钟

注意: 必须更换默认端口27017, 并开启访问限制, 否则有严重的安全风险

一. 安装mongo

  • 1.添加MongoDB存储库:首先,您需要添加MongoDB的官方存储库配置到您的系统中。创建一个名为mongodb-org.repo的文件并打开它:
sudo vi /etc/yum.repos.d/mongodb-org.repo
  • 2.将以下内容粘贴到文件中并保存:
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
  • 3.安装MongoDB:
sudo yum install -y mongodb-org
  • 4.启动
sudo systemctl start mongod

二.更改默认端口, 禁用远程链接(默认,无需操作)

  • 1.修改配置文件 vim /etc/mongod.conf
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

# network interfaces #新的端口, 默认为27017, 这的bindIp 可改为指定IP, 让其访问,不改默认本机才能访问
net:
  port: 28888 
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

#security: 开启访问限制:enabled, 必须进行身份认证才能访问数据库
security:
  authorization: "enabled" 

#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
  • 2.添加数据库和集合, 创建用户
# 1.进入控制台
mongo -port 28888

# 2.查看数据库 show dbs, 但是因为启用了访问限制, 所以看不到数据库

- 3.创建用户和密码, 输入mongo进入命令行

# 4.选择数据库
use admin 

# 5.创建用户 (创建超管账号, 先要关闭验证,修改 authorization: "disabled",再改回去,重启mongo)
db.createUser({
   user: "admin",
   pwd: "密码",
   roles: [{ role: "root", db: "admin" }]
 })
 
 ------------

# 1.创建数据库 (如何存在会进入数据库, 不存在则创建)
use db2023

# 2.创建集合
db.createCollection("coll2023")

# 3.给数据库创建用户
db.createUser({
   user: "user2023",
   pwd: "密码",
   roles: [
      { role: "readWrite", db: "db2023" }
   ]
})
  • 登陆和查看数据
mongo --username admin账号 --password 密码 --port 端口 --authenticationDatabase admin

use 数据库

show collections

# 查看条数
db.daily_stock.count()

# 详情- 看前面几行
db.daily_stock.stats()

# 显示一条数据
db.daily_stock.findOne()

# 数据查询
db.daily_stock.find({goods_id:1})

#删除数据
db.collectionName.deleteOne({ key: value })
db.collectionName.deleteMany({ key: value })

三.用可视化客户端链接mongo (由于需要开启远程访问才可用, 慎重, 前面的内容有修改过,后面未调整)

下载地址:
https://www.mongodb.com/try/download/shell
  • 远程链接
mongodb://admin:123456@服务器ip:27017/admin

image.png

三.在ThinkPHP中使用

  • 1.首先如果是windows, 需要安装mongodb扩展, 例如7.3
https://windows.php.net/downloads/pecl/releases/mongodb/1.8.0/php_mongodb-1.8.0-7.3-nts-vc15-x64.zip
  • 2.配置数据库链接
return [
    // 默认使用的数据库连接配置
    'default'         => env('database.driver', 'mysql'),


    // 数据库连接配置信息
    'connections'     => [
        'mysql' => [
            // 数据库类型
        ],

        // 更多的数据库配置信息
        'mongodb' => [
            'type' => 'mongo',
            'hostname' => 'IP',
            'database' => 'demo01',
            'username' => 'admin',
            'password' => '123456',
            'hostport' => '27017',
        ],
    ],    
];
  • 3.插入和查询数据
use think\facade\Db;

public function index()
{
    // 插入数据
    Db::connect('mongodb')
        ->table('demo01')
        ->insert(['name'=>'张三','age'=>18]);
    Db::connect('mongodb')
        ->table('demo01')
        ->insert(['name'=>'李四','age'=>10]);

    // 查询数据    
    $res = Db::connect('mongodb')
        ->table('demo01')
        ->where(['name' => '李四', 'age' => 10])
        ->select();

    dd($res);
}

四.在Laravel7中使用

  • 1.安装对应版本
composer require jenssegers/mongodb:^3.6
  • webman这里说php7.2以下用3.7, 7.2以上用3.8 webman

  • 2.配置config/database.php

  'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            //省略
        ],
        'mongodb' => [
            'driver' => 'mongodb',
            'host' => 'IP',
            'port' => '27017',
            'database' => '数据库',
            'username' => '账号',
            'password' => '密码',
        ],
    ],
  • 3.使用
use Illuminate\Support\Facades\DB;

$mongo = DB::connection('mongodb');
$insert = [
    'code' => time()
];
$res = $mongo->collection($this->collection)->insert($insert);

五.在原生PHP项目中使用

  • 1.首先安装包
composer require  mongodb/mongodb
  • 2.在PHP中使用
    public function download_stock()
    {

        // Step 2: Establish MongoDB connection
        $client = new \MongoDB\Client("mongodb://admin:填写密码@填写IP:27017/admin");

        // Step 3: Select database and collection
        $db = $client->selectDatabase($database);
        $collection = $db->selectCollection('daily_stock');

        // Step 4: Perform the query
        $query = ['name' => '张三']; // Replace field_name and value with your actual query criteria
        $options = ['projection' => ['_id' => 0]]; // Optional: Projection to exclude _id field from the result
        $result = $collection->find($query, $options);

        // Step 5: Process the results
        foreach ($result as $document) {
            // Process each document returned by the query
            dump($document);
        }


    }

六.应用场景

  • 1.游戏场景

使用MongoDB存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新。

  • 2.物流场景

使用MongoDB存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来,牛逼plus。

  • 3.社交场景

使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。

  • 4.物联网场景

使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。

  • 1.视频直播

使用MongoDB存储用户信息、点赞互动信息。

六、选择MongoDB的场景总结:

  • 数据量大
  • 读写操作频繁
  • 数据价值较低,对事务要求不高