Mongo集群搭建之MongoDB基础

Posted 神奇的老黄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongo集群搭建之MongoDB基础相关的知识,希望对你有一定的参考价值。

点击标题下「神奇的老黄」可快速关注


    本来这一篇文章是应在国庆放假前发布的,无奈因为一些事情耽误了,没有完善好。。。国庆之前的一周主要是在搭建MongoDB集群,因为之前用的mongo服务是在一台服务器上,为了避免断电、误操作等情况导致服务不可用,所以决定将原来的数据库迁移到新搭建的Mongo集群中。


    接下来这几篇的文章我将会更新相关的实现步骤,如果各位小伙伴有对mongo集群感兴趣的可以关注一下,也欢迎各位在留言区补充和指正。


相关介绍


Nosql DB

      这是一个非关系型数据库。通常我们的数据库有三类: 关系型数据库(RDBMS),联机分析处理数据库(OLAP),和非关系型数据库(NoSql)。
      MongoDB属于第三种,而且是一种基于文档的(document oriented)数据库。

优劣势

       优势:查询性能,在都没有建立索引的时候,明显快于mysql。都建立了索引后,不慢于MySql。
       劣势:不支持事务。因此如果对于事务要求很高的情形,不适用这个数据库。

概念&语法

概念

       collection:集合,等于关系型数据库中的table。
       document:文档对象,等同于关系型数据库table中的一行记录。
       field: 键值对,等同于关系型数据库中table的一个column
       database:这个没啥区别。
       数据在MongoDB中是以BSON的格式存储的,所谓BSON就是binary json, 也就是二进制的json数据。

语法

属性:javascript语法。显示数据库:show dbs使用数据库:use db (备注:这样子就好了,db不存在,则“新建”一个出来,不会报错,事实是:直到存储docuemnt对象时才创建collection和数据库) 查询数据表:db.getCollectionNames() / show collections数据库统计信息:db.stats()插入记录:db.your_collection.insert(json表达式) 更新记录:db.your_collection.update(json表达式查询用, {$set:json表达式更新用}, 不存在是否插入记录-默认False, 是否更新所有数据-默认False-只更新第一条) db.your_collection.save(json表达式) :实际上是插入和更新操作的合并,记录不存在则insert(根据_id字段判断),存在则update删除记录:db.your_collection.remove(json表达式)

实际操作

1、安装

# 演示环境 Centos 7# 下载curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.9.tgz# 解压tar -zxvf mongodb-linux-x86_64-rhel70-4.0.9.tgz# 将解压包拷贝到指定目录mv mongodb-linux-x86_64-rhel70-4.0.9/ /usr/local/mongodb # 设置临时环境变量export PATH=/usr/local/mongodb/bin:$PATH

2、启动mongo

# 新建mongo的data文件夹(存放数据库的)以及log文件夹(存放日志的)mkdir -p /home/mongodb/{data,log}# 指定mongo data和log路径,--fork:后台运行mongod --dbpath=/home/mongodb/data --logpath=/home/mongodb/log/mongo.log --fork

Mongo集群搭建之MongoDB基础

3、连接mongo

# 上面启动的端口 默认是27017,连接时也选择默认的就好了$ mongo# 连接成功会出现以下提示MongoDB shell version v4.0.9connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb...>

4、增删改查


> use test_dbswitched to db test_db> db.user.insert({"name":"神奇的老黄","age":18,"qq":"695859954"})WriteResult({ "nInserted" : 1 })

# 语法db.collection.find(query, projection)
# 参数说明query :可选,使用查询操作符指定查询条件projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。> db.user.find() "_id" : ObjectId("5d91c89f10820a0dbe815511"), "name" : "神奇的老黄""age" : 18"qq" : "695859954" }


# 语法db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> })# 参数query : update的查询条件,类似sql update查询内where后面的。update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。writeConcern :可选,抛出异常的级别。# 代码演示> db.user.update({"name":"神奇的老黄"},{$set:{"name":"MagicHuang"}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.user.find(){ "_id" : ObjectId("5d91c89f10820a0dbe815511"), "name" : "MagicHuang", "age" : 18, "qq" : "695859954" }


# 语法db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> })# 参数query :(可选)删除的文档的条件。justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。writeConcern :(可选)抛出异常的级别。
#代码演示db.user.remove({"name":"MagicHuang"})

结束语

    以上MongoDB基础篇的大致内容,接下来会更新MongoDB 搭建集群的三大模式:主从模式、副本集模式、分片集群模式。各位小伙伴哪里不懂或者本文讲述的内容有错误,欢迎在评论区留言讨论~

    点击左下角“阅读原文”可以查看已经写好的csdn博客,内容比较长建议按照目录顺序浏览。


Mongo集群搭建之MongoDB基础

推荐文章





看完本文有收获?请转发分享给更多的人

关注「神奇的老黄」   学习更多的技术

以上是关于Mongo集群搭建之MongoDB基础的主要内容,如果未能解决你的问题,请参考以下文章

mongo 分片集群的搭建

mongodb集群搭建 (仲裁模式)

互联网项目之Mongodb集群搭建与业务场景讨论

mongo数据库主从备份服务集群搭建

mongodb3.6集群搭建:分片集群认证

k8s 搭建mongodb多副本集群