mongodb数据库操作

MongoDB操作起来非常灵活,不会像传统的关系型数据库那样有很多限制,首先来看数据库的创建和删除如何完成。

1.创建数据库  

语法:use 数据库名。这个语法放在关系型数据库中是切换数据库的意思,在MongoDB中,如果该数据库存在,直接切换,如果不存在,则先创建,再切换,就是这么简单方便。比如,我们创建一个名为testdb的数据库,代码如下。

use testdb

如图,终端打印switched to db testdb,表示testdb数据库已经创建完毕,并且系统已经切换到了该数据库中。

2.查看数据库

show dbs

我们并没有在结果列表中看到刚才创建的testdb数据库,这是因为testdb只是创建,还没有添加数据,空的数据库不会在show dbs中显示。

3.查看当前切换的数据库

db

4.删除数据库

先切换到要删除的数据库use db,再执行删除操作db.dropDatabase(),比如,删除testdb数据库。

use testdb
db.dropDatabase()

如图,终端打印{"ok":1},表示删除成功。

数据库创建完成之后,接下来就是添加数据,MongoDB中数据的存储结构和非关系型数据库有很大区别,MongoDB是以集合的形式来存储数据的,并且数据是以JSON的格式存储到集合中的。

5.创建集合

集合的创建和数据库的创建类似,不需要先创建,再操作,创建和操作可以用一条命令同时完成,比如,我们现在再testdb中创建一个my_student集合,并且给集合中添加数据{x:1,name:"张三"}。

语法:db.集合名.insert({JSON})

db.my_student.insert({x:1,name:"张三"})

如图,终端打印WriteResult({"nInserted":1})表示添加成功,使用db.my_student.save({x:1,name:"张三"})也可以完成添加功能。

6.查看集合

show collections或者show tables,都是查看当前数据库全部集合的命令。

show tables
show collections

7.查询全部数据

db.my_student.find()

如图,查询出了全部数据,我们可以看到每一条数据除了x和name属性之外,还有一个_id属性,并且其类型为ObjectId,该属性是MongoDB自动添加的,相当于主键,并且不会重复,所以我们就不需要设置自增来保证主键的唯一性了。

8.精确查找,比如,查找x=1的数据

db.my_student.find({x:1})

9.查询结果集合中的第1条数据

如果同时查询出多条符合条件的数据,可以使用findOne来获取第1条结果。

db.my_student.findOne({x:1})

10.分页查询

MongoDB的分页查询很简单,语法类似于MySQL,使用limit关键字完成,比如,查询前3条记录。

db.my_student.find().limit(3)

如果要查询第2页的3条记录,结合skip()方法,skip(num)是跳过前num条记录。

db.my_student.find().skip(1).limit(3)

查询的结果是第2条到第4条记录。

11.查询排序

根据x的值进行升序排列。

db.my_student.find().sort({x:1})

根据x的值进行降序排列。

db.my_student.find().sort({x:-1})

12.修改

将x:1的数据name值修改为Jack。

db.my_student.update({x:1},{x:1,name:"Jack"})

 

修改完成之后,再查询,可以看到name已经改为了Jack。

13.如果修改一条不存在的数据,不会报错,对数据没有做出修改,并给出信息。

db.my_student.update({x:11},{x:11,name:"Tom"})

nMatched表示匹配成功为0条,nModified表示修改的数据为0条。

14.我们给update方法添加一个参数,结果就不一样了。

db.my_student.update({x:11},{x:11,name:"Tom"},true)

nUpserted表示如果数据不存在,先创建,再修改,所以update方法的第3个boolean类型参数表示的是如果数据不存在,是否要创建,默认值为false,表示不创建。

15.如果同时存在多条匹配的数据,默认只修改第一条。

db.my_student.update({x:1},{x:1,name:"David"},false)

如图,只有一条x:1的数据被修改了,如果需要多x:1的数据全部进行修改,添加一个参数即可,同样是boolean类型的参数,默认false表示只修改第一条,true表示全部修改,需要注意的是最后一个参数为true时的时候必须使用{$set:}进行更新。

db.my_student.update({x:1},{$set:{x:1,name:"Jack"}},false,true)

16.删除数据

将x:1的数据删除,集合中所有满足x:1的数据都会被删除。

db.my_student.remove({x:1})

17.清空集合

如果remove()方法参数为空,会删除集合中所有数据。

db.my_student.remove({})

本文转自:https://mp.weixin.qq.com/s?__biz=MzI1NTE3OTk4Nw==&mid=2653734370&idx=1&sn=660cd367bbfa31a35f19a45729b4b3d6&chksm=f1e1885ec69601489ac816579d3dda1c9487aede5ea0ef5614529291f8ddabe1ed58c2059a10&mpshare=1&scene=1&srcid=0803oZNNLcu4nxep5UMsquo2#rd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值