MongoDB 基本入门操作(基本概念/操作 - 增删改查)

MongoDB 基础入门操作

1.MongoDB 基本概念

MongoDB 中的基本概念是:文档、集合、数据

与 MySQL 对比更有助于理解,如下表所示:

SQL 术语/概念MongoDB 术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins\表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

2.MongoDB 创建新实例

  • 默认情况下,MongoDB 在启动时 bindIP 设置为 127.0.0.1,即绑定至 localhost 网络接口,这意味着 mongod 只能接收来自本机上运行的客户端的连接

  • 除非将此值设置为有效的网络接口,否则远程客户端都无法连接至 mongod

[root@localhost ~]# vim /etc/mongod.conf 

10   path: /var/log/mongodb/mongod.log		'//系统日志文件存放位置'
14   dbPath: /var/lib/mongo					'//数据存储位置'
28   port: 27017							'//默认端口号'
29   bindIp: 127.0.0.1						'//监听地址,修改为0.0.0.0则监听所有'

[root@localhost ~]# cd /etc/
[root@localhost etc]# cp -p mongod.conf mongod-01.conf
'//生成第二个mongod数据库实例'
[root@localhost etc]# vim mongod-01.conf
'//修改,防止冲突'
10   path: /var/log/mongodb/mongod-01.log
14   dbPath: /var/lib/mongo-01
28   port: 27018

[root@localhost etc]# mkdir -p /var/log/mongodb
[root@localhost etc]# touch /var/log/mongodb/mongod-01.log
[root@localhost etc]# mkdir -p /var/lib/mongo-01
'//需要我们去主动创建目录'
[root@localhost etc]# mongod -f /etc/mongod2.conf		'//指定,启动新实例'
about to fork child process, waiting until server is ready for connections.
forked process: 22623
child process started successfully, parent exiting
[root@localhost etc]# netstat -natp|grep mongod
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      14986/mongod        
tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      22623/mongod        
[root@localhost etc]# mongo --port 27018		'//进入新实例'

3.MongoDB 基本操作

----库、集合的创建与删除----

> use test-01		'//连接或创建数据库test-01'
switched to db test-01
> db		'//显示当前数据库对象或集合'
test-01
> show dbs		'//显示所有数据的列表'
admin   0.000GB
config  0.000GB
local   0.000GB
'//可以看到,我们刚才新建的数据库test-01并不在数据库列表中,需要先向其插入数据'
> db.test01.insert({"name":"凯迪拉克"})
WriteResult({ "nInserted" : 1 })
> show dbs		'//有了'
admin    0.000GB
config   0.000GB
local    0.000GB
test-01  0.000GB

> use test-01
switched to db test-01
> db.dropDatabase()		'//切换至该数据库后执行删除命令'
{ "dropped" : "test-01", "ok" : 1 }
> show dbs		'//检查是否删除成功'
admin   0.000GB
config  0.000GB
local   0.000GB

> use test-02		'//新建一个数据库test-02'
switched to db test02
> db.createCollection("test02")		'//创建集合,类似于mysql中的表'
{ "ok" : 1 }
> show tables		'//查看集合'
test02
> show collections		'//mongodb中建议用此命令'
test02
> db.test02.drop()		'//删除该集合。注意,若集合名中有符号将会报错,无法删除'
true
> show tables		'//检查,删除成功'

> db.createCollection("mysql",{capped:true,size:6142800,max:10000})
{ "ok" : 1 }
'//创建集合也可以附带关键参数,以上指创建固定集合mysql(capped为true,则必须指定size参数)'
'//固定集合指有固定大小的集合,当达到最大值时会自动覆盖最早的文档'
'//size:为固定集合指定一个最大值,即字段'
'//manx:指定固定集合中包含文档的最大数量'
'//即为整个集合空间大小为6142800B,文档最大个数为10000个'


----文档操作(update、save、find、remove)----
'//在MongoDB中,当插入一些文档时,其会自动创建集合'

> db.test01.find()		'//查看该集合中文档'
{ "_id" : ObjectId("6074f17d138a104252b39796"), "name" : "凯迪拉克" }
> db.test01.update({"name":"凯迪拉克"},{$set:{"name":"郑大佬"}})
'//使用update更新集合中已存在的文档,以上语句只会修改第一条发现的文档'
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.test01.find()
{ "_id" : ObjectId("6074f17d138a104252b39796"), "name" : "郑大佬" }
'//若要修改多条相同的文档,需要添加{multi:true}'

'//save用于替换以后文档,id主键存在则更新,不存在则插入'
> db.test01.save({"name":"SICONG"})		'
WriteResult({ "nInserted" : 1 })
> db.test01.find()
{ "_id" : ObjectId("6074f17d138a104252b39796"), "name" : "郑大佬" }
> db.test01.save({"_id" : ObjectId("6074fa3d138a104252b3979a"), "name" : "sicong"})		'//记得开头指定id,否则将为插入新文档操作'
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.test01.find()
{ "_id" : ObjectId("6074f17d138a104252b39796"), "name" : "sicong" }

'//remove用来移除集合中的数据'
'//执行remove前建议先执行find判断执行的条件是否正确,养成良好习惯'
> db.test01.insert({"name":"xcf"})
WriteResult({ "nInserted" : 1 })
> db.test01.insert({"name":"zxc"})		'//新建两条数据做删除练习'
WriteResult({ "nInserted" : 1 })
> db.test01.find()		'//检查'
{ "_id" : ObjectId("6074fde58412f502a7fdb268"), "name" : "sicong" }
{ "_id" : ObjectId("6074fe098412f502a7fdb269"), "name" : "xcf" }
{ "_id" : ObjectId("6074fe0c8412f502a7fdb26a"), "name" : "zxc" }
> db.test01.remove({"name" : "sicong"})		'//删除sicong数据'
WriteResult({ "nRemoved" : 1 })
> db.test01.find()		'//再次检查'
{ "_id" : ObjectId("6074fe098412f502a7fdb269"), "name" : "xcf" }
{ "_id" : ObjectId("6074fe0c8412f502a7fdb26a"), "name" : "zxc" }
> db.test01.remove({})		'//删除所有数据'
WriteResult({ "nRemoved" : 2 })
> db.test01.find()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xucf1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值