【mongodb】——mongodb总结

一、前言

     mongodb是目前比较流行的一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库(NoSQL)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。mongoDB中将一条数据存储为一个文档(document),数据结构由键值(key-value)对组成。 其中文档类似于我们平常编程中用到的JSON对象。 文档中的字段值可以包含其他文档,数组及文档数组。mongoDB中相关概念与我们熟悉的SQL概念对比如下:

MongoDB术语/概念说明对比SQL术语/概念
database数据库database
collection集合table
document文档row
field字段column
indexindex索引
primary key主键 MongoDB自动将_id字段设置为主键primary key

 

二、数据库常用命令

show dbs;:查看数据库

> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB

use q1mi;:切换到指定数据库,如果不存在该数据库就创建。

> use q1mi;
switched to db q1mi

db;:显示当前所在数据库。

> db;
q1mi

db.dropDatabase():删除当前数据库

> db.dropDatabase();
{ "ok" : 1 }

三、数据集常用命令

db.createCollection(name,options):创建数据集

  • name:数据集名称
  • options:可选参数,指定内存大小和索引。
> db.createCollection("student");
{ "ok" : 1 }

show collections;:查看当前数据库中所有集合。

> show collections;
student

db.student.drop():删除指定数据集

> db.student.drop()
true

四、文档常用命令

插入一条文档:

> db.student.insertOne({name:"小王子",age:18});
{
	"acknowledged" : true,
	"insertedId" : ObjectId("5db149e904b33457f8c02509")
}

插入多条文档:

> db.student.insertMany([
... {name:"张三",age:20},
... {name:"李四",age:25}
... ]);
{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("5db14c4704b33457f8c0250a"),
		ObjectId("5db14c4704b33457f8c0250b")
	]
}

查询所有文档:

> db.student.find();
{ "_id" : ObjectId("5db149e904b33457f8c02509"), "name" : "小王子", "age" : 18 }
{ "_id" : ObjectId("5db14c4704b33457f8c0250a"), "name" : "张三", "age" : 20 }
{ "_id" : ObjectId("5db14c4704b33457f8c0250b"), "name" : "李四", "age" : 25 }

查询age>20岁的文档:

> db.student.find(
... {age:{$gt:20}}
... )
{ "_id" : ObjectId("5db14c4704b33457f8c0250b"), "name" : "李四", "age" : 25 }

更新文档:

> db.student.update(
... {name:"小王子"},
... {name:"老王子",age:98}
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.student.find()
{ "_id" : ObjectId("5db149e904b33457f8c02509"), "name" : "老王子", "age" : 98 }
{ "_id" : ObjectId("5db14c4704b33457f8c0250a"), "name" : "张三", "age" : 20 }
{ "_id" : ObjectId("5db14c4704b33457f8c0250b"), "name" : "李四", "age" : 25 }

删除文档:

> db.student.deleteOne({name:"李四"});
{ "acknowledged" : true, "deletedCount" : 1 }
> db.student.find()
{ "_id" : ObjectId("5db149e904b33457f8c02509"), "name" : "老王子", "age" : 98 }
{ "_id" : ObjectId("5db14c4704b33457f8c0250a"), "name" : "张三", "age" : 20 }

五、mongodb读写流程

        mongodb分片集群是在副本集的基础上弄出来的,意在解决水平扩展的问题。,下图展现的就是一个高可用的mongodb分片集群。整个集群分为四大部分,上层的客户端(其实也可以是业务代码)、Mongos(路由)、Mongod(作为参数存储的)、replica(副本集)。

  • 副(复)本集(replica set)中存储的数据是相同的,为的是容灾。
  • 分片(Shard Server)为了数据扩展,按照片键进行节点划分,数据根据片键存储到对应的服务器上。
  • Mongos是路由。

1、向MongoDB写入数据

写数据时,先向配置中心注册,配置中心会返回相对应的key值

2、从MongoDB读取数据

 

六、mongodb集群及高可用 

        这部分内容参见我的另一篇博客:数据库高可用集群构建模式之——mongodb篇

七、参考文章

参考文章1:https://www.cnblogs.com/nulige/p/7613721.html

参考文章2:https://cloud.tencent.com/developer/article/1481321

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值