赞
踩
首先,我们已经学了很多数据库了,Redis、Mysql、Oracle,那为什么还需要MongoDB呢
看看下面这样的需求场景:
1、数据量很大
2、写入操作频繁
3、价值较低(解释一下:就是说在几十万数据中零星丢个几条,问题不大,不会影响业务)
对于这样的功能需求,非常适合用MongoDB来实现数据存储
(反正也记不太住,看看了解一下)
MongoDB | 关系型数据库 |
---|---|
数据库(databases) | 数据库(databases) |
集合(collection) | 表(table) |
文档(document) | 行(row) |
PS:值得说一下的Object ID
MongoDB中存储的文档必须有一个_id键,这个键的值可以是任何类型的,默认是个ObjectID对象
ObjectID类似唯一主键,可以很快的生成和排序,包含12 bytes,含义如下:
1、前4个字节表示创建unix时间戳,格林尼治时间UTC时间,比北京时间晚了8个小时
2、接下来的3个字节是机器标识码
3、紧接着的2个字节由进程id组成PID
4、最后3个字节是随机数
docker pull mongo:latest
下载成功后如下图所示:
用docker tag 命令给镜像改个名哈,当然不改也行
docker run -itd --name mongo --hostname mongo -p 27017:27017 mongo
docker exec -it mongo bash
mongo
或者
mongo 127.0.0.1
在执行这条命令之前可以看看mongo --help看看mongo支持的一些命令
mongo命令登录后,首先可以用help命令看看支持的一些命令
> db.comment.insert({_id:"1",content:"NoSQL就是最好的!",userId:"001",thumbUp:2022})
WriteResult({ "nInserted" : 1 })
> db.comment.insert({_id:"2",content:"不,Mysql才是最好的",userId:"002",thumbUp:2023})
WriteResult({ "nInserted" : 1 })
> db.comment.insert({_id:"3",content:"能砍菜的刀都是好刀",userId:"003",thumbUp:2024})
WriteResult({ "nInserted" : 1 })
> db.comment.insert({_id:"4",content:"坚持写bug,让世界更快乐",userId:"004",thumbUp:2025})
WriteResult({ "nInserted" : 1 })
> db.comment.find()
{ "_id" : ObjectId("624c8bd4e70580ee616dd388"), "name" : "Dean", "id" : "1" }
{ "_id" : "1", "content" : "NoSQL就是最好的!", "userId" : "001", "thumbUp" : 2022 }
{ "_id" : "2", "content" : "不,Mysql才是最好的", "userId" : "002", "thumbUp" : 2023 }
{ "_id" : "3", "content" : "能砍菜的刀都是好刀", "userId" : "003", "thumbUp" : 2024 }
{ "_id" : "4", "content" : "坚持写bug,让世界更快乐", "userId" : "004", "thumbUp" : 2025 }
> db.comment.find({userId:"002"})
{ "_id" : "2", "content" : "不,Mysql才是最好的", "userId" : "002", "thumbUp" : 2023 }
> db.comment.find().limit(2)
{ "_id" : ObjectId("624c8bd4e70580ee616dd388"), "name" : "Dean", "id" : "1" }
{ "_id" : "1", "content" : "NoSQL就是最好的!", "userId" : "001", "thumbUp" : 2022 }
单纯看名字应该可以看出是什么意思,就不多说了
> db.comment.update({_id:'2'},{$set:{thumbUp:20000}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.comment.find({userId:"002"})
{ "_id" : "2", "content" : "不,Mysql才是最好的", "userId" : "002", "thumbUp" : 20000 }
> db.comment.remove({name:"Dean"})
WriteResult({ "nRemoved" : 1 })
> db.comment.find()
{ "_id" : "1", "content" : "NoSQL就是最好的!", "userId" : "001", "thumbUp" : 2022 }
{ "_id" : "2", "content" : "不,Mysql才是最好的", "userId" : "002", "thumbUp" : 20000 }
{ "_id" : "3", "content" : "能砍菜的刀都是好刀", "userId" : "003", "thumbUp" : 2024 }
{ "_id" : "4", "content" : "坚持写bug,让世界更快乐", "userId" : "004", "thumbUp" : 2025 }
一直从控制台打这个代码实在是太不方便了,尤其有好多花括号和圆括号,所以选择一个可视化工具非常重要,我这里最终选择了Rob 3T
MongoDB有很多可视化工具,如robomongo,Studio 3T(功能强大但收费),Robo 3T(免费)
以上。(实在太困了,先睡了)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。