`MONGDB` 安装与使用

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
简介: `MONGDB` 安装与使用

MONGDB 安装与使用

咱们来回顾一下上次分享的内容:

  • 如何使用log
  • log 包原理和具体实现
  • 自定义日志

要是对 GO 的日志包还有点兴趣的话,可以查看文章 GO的日志怎么玩 ?

今天咱们来玩个简单的 mongodb 的安装和使用

MONGODB介绍

MongoDB 是一个基于分布式文件存储的数据库

使用 C++ 语言编写

MongoDB 主要是 为WEB应用提供可扩展的高性能数据存储解决方案

是非关系数据库当中功能最丰富,它支持的数据结构非常松散,是类似 JSONBSON 格式的

MONGODB 的语法有点类似于面向对象的查询语言,咱们用起来也是很简单的

mongodb 安装

下载mongodb安装包

网址:https://www.mongodb.com/try/download/community

官网上可以下载多个系统的mongdb安装包,windowscentosubuntu等等,如图

根据页面上的内容,咱们可以选择不同版本的,按需索取,默认咱们就做吃螃蟹的人吧,直接上最新的

安装MONGODB软件

解压mongodb 压缩包
tar xvf mongodb-linux-x86_64-rhel80-4.4.4.tgz
将解压生成的目录 改名为mongodb ,并移动到 /usr/local
mv mongodb-linux-x86_64-rhel80-4.4.4.tgz mongodb
mv mongodb /usr/local/
进入mongodb目录下
  • 创建data目录
  • data目录下创建db目录
  • data目录下创建log目录
mkdir data
cd data
mkdir db
mkdir log
回到mongo目录下,创建mongodb的配置文件,mongodb.conf,之后启动需要用到

需要在mongodb.conf下配置

  • dbpath

数据库的数据存放位置

  • logpath

日志文件存放位置

  • logappend

日志是否以追加的方式

  • port

端口号

  • auth

是否需要认证

  • fork

是否以守护进程的方式运行

  • bind

限制远程访问的ip,不做限制的话可以写0.0.0.0

dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/data/log/mongodb.log
logappend=true
port=27017
auth=true
fork=true
bind_ip=0.0.0.0
mongodb可执行程序写入到/etc/profile 中,开机时会自动读取这个文件
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
启动mongodb服务
mongod -f /usr/local/mongodb/mongodb.conf
关于防火墙
  • 可以直接关闭系统的防火墙平时
  • 防火墙打开端口27017端口,以便于客户端进行连接mongdb

关于MONGODB的状态查看

查询mongodb状态
ps aux |grep mongodb
查看端口
netstat -antp |grep 27017
关闭mongodb

有如下两种操作,随你选,喜欢啥用啥

  • 通过kill 命令杀掉 PID即可
  • mongod -f /usr/local/mongodb/mongodb.conf --shutdown

mongodb设置角色、用户名、密码

  • /usr/local/mongodb/mongodb.conf 的配置如下,我们可以吧auth置为falseauth字段开启,是开启认证,关闭则是关闭认证

  • mongodb有多个角色
角色
用户 read、readWrite
管理员 dbAdmin、dbOwner、userAdmin
集群管理员 clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复权限 backup、restore
所有数据库权限 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户 root
内部角色 __system

mongodb 数据库的使用

选择数据库
use xxx
创建管理员账号
db.createUser({user:'admin2',pwd:'123456',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})

执行后,如下效果

Successfully added user: {
        "user" : "admin2",
        "roles" : [
                {
                        "role" : "readWriteAnyDatabase",
                        "db" : "admin"
                }
        ]
}

接下来具体的mongodb数据库操作,可以看菜鸟教程学习一波,很快就会用了

https://www.runoob.com/mongodb/mongodb-create-collection.html

mongodb设置开机启动

  • 添加一个mongodb的服务 到 init.d
vim /etc/rc.d/init.d/mongod
  • 编写这个服务的具体实现
start() {
  /usr/local/mongodb/bin/mongod  --config /usr/local/mongodb/mongodb.conf
}
stop() {
  /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown
}
case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  restart)
  stop
  start
  ;;
    *)
 echo  $"details: $0 {start|stop|restart}"
 exit 1
esac
  • 对这个服务的可执行程序添加执行权限
chmod +x /etc/rc.d/init.d/mongod
  • 启动 mongod
service mongod start
  • 关闭mongod
service mongod stop
  • 重启mongod
service mongod restart

可视化工具

介绍一个可视化工具,非常好用,比nosql这个工具好用多了

Robo 3T 1.3.1 下载链接如下

https://robomongo.org/download

软件操作比较简单,大家下载下来后,熟悉一下界面,就会使用了。

GOLANG简单操作mongodb

mongodb的驱动大家使用比较多的有2种:

  • mongodb 官方的库, go.mongodb.org/mongo-driver/mongo
  • 第三方库 gopkg.in/mgo.v2
    地址为:http://labix.org/mgo

我们选用官方的驱动库来介绍mongdb简单的

type Test struct {
  Name       string `bson:"name"`
    Age         int    `bson:"age"`
  CreateTime int64  `bson:"createTime"`
  UpdateTime int64  `bson:"updateTime"`
}
func initMongdb() error {
  // 1 建立mongodb连接
    // 填写自己的mongdb地址,端口默认是 27017
  clientOptions := options.Client().ApplyURI("mongodb://admin:123456@xxxx:27017/admin?authMechanism=SCRAM-SHA-1")
  mclient, err := mongo.Connect(context.TODO(), clientOptions)
  if err != nil {
    mlog.Error(err)
    return err
  }
  // 2, 选择数据库my_db
  database := mclient.Database("admin")
  // 3, 选择表my_collection
  collection := mgMongoDatabase.Collection("deviceToken")
  mlog.Info("connect mongdb successfully")
    // 插入数据
    record := &Test{
    Name:        "小魔童",
    CreateTime: time.Now().Unix(),
    UpdateTime: time.Now().Unix(),
  }
    result, err := collection.InsertOne(context.TODO(), record)
  if err != nil {
    mlog.Error(err)
    return err
  }
  mlog.Info(result)
    // 更新数据
   // if err := UpdateData(bson.M{"name": "xxxx"}, bson.D{{"$set", bson.M{"age": 15}}}); err != nil {
  //    mlog.Error(err)
  //    return
  //  }
    //查询单个记录
  //data := &DeviceToken{}
  //err = collection.FindOne(context.TODO(),bson.M{}).Decode(data)
  //mlog.Info(data)
  //查询所有记录
  data := []DeviceToken{}
  cursor, err := collection.Find(context.TODO(), bson.M{})
  cursor.All(context.TODO(), &data)
  mlog.Info(data)
    // 删除一条记录
    //res ,err := mgMongoCollection.DeleteOne(context.TODO(),bson.M{"name":"xxxx"})
  //if err != nil{
  //  mlog.Warn(err)
  //}
  return nil
}

感兴趣的 XDM 可以多多实践,将上述代码贴到自己的环境查看效果,上述主要讲了如下几个操作:

  • 连接 mongodb 数据库
  • 选择对应 库, 和 表
  • 插入一条数据 / 插入多条数据
  • 更新一条数据 / 插入多条数据
  • 查询新一条数据 / 插入多条数据
  • 删除新一条数据 / 插入多条数据

对应数据库的基本应用还是非常简单的,但是我们会应用之后,一定要去细细品味其中的原理,官方 或者是第三方包是如何实现的,我们自己是否可以自己写一个版本

感兴趣的小伙伴,可以尝试深入一下

总结

  • mongodb 的介绍
  • mongodb 如何安装
  • mongodb 如何简单使用
  • GO 如何操作 mongodb

欢迎点赞,关注,收藏

朋友们,写作不易

你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是小魔童哪吒,欢迎点赞关注收藏,下次见~

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
存储 NoSQL 关系型数据库
一.MongoDB入门-MongDB介绍和安装
MongoDB入门-MongDB介绍和安装
|
存储 JSON NoSQL
MongoDB入门-MongDB介绍和安装
MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
591 1
|
6月前
|
弹性计算 NoSQL Shell
一键安装 MongoDB 数据库脚本
【4月更文挑战第29天】
77 4
|
存储 NoSQL Linux
mongdb安装笔记
mongdb安装笔记
74 1
|
数据库 Docker 容器
mongdb的安装
mongdb的安装
59 0
|
NoSQL 数据可视化 Linux
php配置mongodb扩展、安装mongodb服务教程
php配置mongodb扩展、安装mongodb服务教程
644 0
php配置mongodb扩展、安装mongodb服务教程
|
存储 NoSQL MongoDB
MongDB安装
MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community
159 0
MongDB安装
|
存储 NoSQL MongoDB
MongoDB系统库
本文基于MongoDB社区版 3.4.21、3.6.12、4.0.11,WT引擎,主要是对单节点、副本集、分片的系统库的介绍。
2317 0
|
NoSQL Shell
MongoDB之旅:MongDB安装和使用(后台运行)
初识MongDB 随时都要保持求知欲! 一、什么是MongDB MongDB的官网 什么是MongoDB? MongoDB是一个文档数据库,具有您想要的查询和索引所需的可扩展性和灵活性。
2129 0
|
NoSQL 数据库 Windows
windows安装mongodb
一、资源 mongo下载地址: https://www.mongodb.com/download-center#community romongo下载: https://robomongo.org/  如下三个文件,(mongodb-compass可以不用下在,这是管理mongo用的图形化界面,习惯...
1203 0