一文便知 GO 中mongodb 的安装与使用

news2024/11/25 22:39:30

MONGDB 安装与使用

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

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

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

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

MONGODB介绍

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

使用 C++ 语言编写

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

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

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

mongodb 安装

下载mongodb安装包

网址:www.mongodb.com/try/downloa…

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

image.png

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

安装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字段开启,是开启认证,关闭则是关闭认证

image.png

  • 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'}]})

AnyDatabase',db:'admin'}]})

执行后,如下效果

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

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

www.runoob.com/mongodb/mon…

image.png

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  下载链接如下

robomongo.org/download

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

image.png

GOLANG简单操作mongodb

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

  • mongodb 官方的库, go.mongodb.org/mongo-driver/mongo
  • 第三方库  gopkg.in/mgo.v2
    地址为: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/939057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度文库系统PPT docx pdf文档转换系统在线预览知识付费程序源码 二次开发

基于PHPMYSQL开发的适用于多平台的文档管理系统,支持doc、ppt、excel、pdf、压缩包、图片、音视频 等资源的在线预览和下载,响应速度更快速对SEO更友好,收录更快、排名更强,内置文章、问题、广告管理、TAG标签、内部链接等多个运营…

解决ubuntu文件系统变成只读的方法

所欲文件变成只读,这种情况一般是程序执行发生错误,磁盘的一种保护措施 使用fsck修复 方法一: # 切换root sudo su # 修复磁盘错误 fsck -t ext4 -v /dev/sdb6 方法二: fsck.ext4 -y /dev/sdb6 重新用读写挂载 上面两种方法&…

10*1000【3】

----------------------利用技术实现规模的框架(Vince Iswara)------------------- 概述: ----------------挑战1:最大限度的发挥有限资源的影响 搭建一个框架,找到框架中的优先级,同时找到框架中的焦点&…

vue2 路由入门

一、单页应用程序介绍 1.概念 单页应用程序:SPA【Single Page Application】是指所有的功能都在一个html页面上实现 2.具体示例 单页应用网站: 网易云音乐 https://music.163.com/ 多页应用网站:京东 https://jd.com/ 3.单页应用 VS 多页…

基于Spring Boot的软件缺陷追踪系统的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的软件缺陷追踪系统的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java spri…

智定义、易调整,火山引擎DataLeap助力企业轻松实现全流程值班管理

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,火山引擎大数据研发治理套件DataLeap全新上线值班管理模块,企业可通过该模块体系化智能化创建值班计划、管理值班人员,适用…

博途PLC下载上传连接不上(固件版本,软件版本问题)

经常使用博途PLC的小伙伴应该都有遇到过通信连不上,程序下载不了、下载了程序提示错误等的情况,这篇博客汇总一些解决方法,供大家参考。大部分问题都和下面这4大部分有关 1、主要原因 点击在线和诊断,可以查看CPU的实际固件版本号 2、查看固件版本号 S7-1500固件更新问题…

解决jupyter notebook可以使用pytorch而Pycharm不能使用pytorch的问题

之前我是用的这个目录下的Python 开始更新目录 1、 2、 3、

【附安装包】Ansys Zemax OpticStudio2023安装教程

软件下载 软件:Zemax OpticStudio版本:2023R1语言:简体中文大小:2.15G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.0GHz 内存4G(或更高)下载通道①百度网盘丨64位下载链接:https:…

成功对接巴斯夫BASF EDI 平台

BASF,作为中国化工领域重要的外商投资企业,巴斯夫主要的投资项目位于南京、上海和重庆,生产基地遍布全国,其中巴斯夫上海创新园更是全球的研发枢纽。2017年,巴斯夫大中华区销售额达到73亿欧元(按客户所在地…

云平台线上盲盒模式特点

就区区卖盲盒,凭啥可以市值达450yi? 目前,各大电商平台生产流量的能力很匮乏了。这就导致流量成本居高不下,大量电商卖家面临淘汰。当纯电商被取代,就会迎来下一个风口。想抓住新的趋势,请认真看完下面的内…

Python爬虫追踪新闻事件发展进程及舆论反映

大家好!在当今信息爆炸的时代,了解新闻事件的发展进程和舆论反映对于我们保持对时事的敏感度和了解社会动态至关重要。在本文中,我将与你分享使用Python爬虫追踪新闻事件发展进程和舆论反映的方法,帮助你获取及时、全面的新闻信息…

如何自定义iview树形下拉内的内容

1.使用render函数给第一层父级定义 2. 使用树形结构中的render函数来定义子组件 renderContent(h, {root, node, data}) {return data.children.length0? h(span, {style: {display: inline-block,width: 400px,lineHeight: 32px}}, [h(span, [h(Icon, {type: ios-paper-outli…

Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案

在启动oracle的服务OracleOraDb11g_home1TNSListener时,提示服务启动后又停止了。 解决方法: 修改oracle安装目录下的两个配置文件: 以上两个文件,对应的HOST的值,都改为127.0.0.1 然后再启动服务,启动成…

16 django框架(上)软件安装|创建项目|基础了解|模型类

文章目录 mvc与mvtmvcmvt 软件安装创建项目(window)新建django项目相关了解 框架介绍模型类ORM(依赖倒置原则)连接mysql与sqlite3sqlite3mysql 基础了解字段属性和选项模型类属性命名限制字段类型选项 查询查询函数 F对象Q对象聚合…

开源项目-数据可视化分析平台

哈喽,大家好,今天给大家带来一个开源项目-数据可视化分析平台。项目通过SpringBoot实现 数据可视化分析平台主要有数据源管理,项目管理,数据集管理,图表管理,看板管理等功能 登录 数据源管理 数据源管理功能可以添加MySQL,Oracle,PostgreSQL等类型的数据源信息 项目…

JVM知识点(二)

1、G1垃圾收集器 -XX:MaxGCPauseMillis10,G1的参数,表示在任意1s时间内,停顿时间不能超过10ms;G1将堆切分成很多小堆区(Region),每一个Region可以是Eden、Survivor或Old区;这些区在…

嵌入式学习笔记——ARM的编程模式和7种工作模式

ARM提供的指令集 ARM态-ARM指令集(32-bit) Thumb态-Thumb指令集(16-bit) Thumb2态-Thumb2指令集(16 & 32 bit) Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在…

自编码器:数据降维和特征提取的新方法

文章目录 自编码器的原理编码过程解码过程 自编码器的应用数据降维特征提取 拓展应用总结 🎉欢迎来到AIGC人工智能专栏~自编码器:数据降维和特征提取的新方法 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客&#x1f…

LeetCode第6~10题解

CONTENTS LeetCode 6. N 字形变换(中等)LeetCode 7. 整数反转(中等)LeetCode 8. 字符串转换整数-atoi(中等) LeetCode 6. N 字形变换(中等) 【题目描述】 将一个给定字符串 s 根据…