MongoDB-入门操作

上一篇我们讲了window下如何安装mongodb,那这一篇我们趁热打铁,这就入门吧。打开cmd,进入mongodb安装路径下的bin目录,然后输入mongo命令进入交互环境。

1、查看所有数据库

(1)命令格式:show databases;

(2)结果:

2、 创建数据库

(1)命令格式:use testDatabase;

(2)说明:use + dbname命令,即是切换到某一数据库,也是创建一个数据库的命令。

(3)结果:

3、查看testDatabase下的所有集合 

(1)命令格式:show collections;

(2)说明:在MongoDB中我们不叫表,称之为集合。但其实就是关系型数据库中表的概念。

4、向testCollection集合中插入文档

(1)命令格式:db.testCollection.insert({json串});

(2)举例:

db.testCollection.insert({"name":"张三","sex":"男","age":20,"score":90});
db.testCollection.insert({"name":"李四","sex":"女","age":23,"score":80});
db.testCollection.insert({"name":"王五","sex":"男","age":25,"score":84});
db.testCollection.insert({"name":"赵六","sex":"女","age":21,"score":95});
db.testCollection.insert({"name":"钱七","sex":"女","age":20,"score":78});
db.testCollection.insert({"name":"王八","sex":"男","age":23,"score":95});
db.testCollection.insert({"name":"秦九","sex":"男","age":24,"score":90});

(3)说明:MongoDB中不叫记录,叫文档,所有的文档都是JSON格式。

(4)结果:

5、查看testCollection集合中所有文档

(1)命令格式:db.testCollection.find();

(2)说明:当然我们也可以使用db.testCollection.find().pretty();以更好的排版显示结果。

(3)结果: 

6、 删除一个文档

(1)需求:删除名字为张三的这条文档。

(2)命令格式:db.testCollection.remove({"name":"张三"});

(3)结果:

7、关系运算 

7.1、找出成绩大于94分的学生

(1)命令格式:db.testCollection.find({“score”:{“$gt”:94}});

(2)结果:

7.2、找出年龄小于21岁的学生

(1)命令格式:db.testCollection.find({"age":{"$lt":21}});

(2)结果:

7.3、找到姓名等于李四的学生

(1)命令格式:db.testCollection.find({"name":"李四"}); || db.testCollection.find({"name":{"$eq":"李四"}});

(2)结果:

7.4、找到年龄大于等于24的学生

(1)命令格式:db.testCollection.find({“age”:{“$gte”:24}});

(2)结果:

7.5、找到分数小于等于90分的学生

(1)命令格式:db.testCollection.find({“score”:{“$lte”:90}});

(2)结果:

7.6、找到性别不为男的学生

(1)命令格式:db.testCollection.find({“sex”:{“$ne”:”男”}});

(2)结果:

8、findOne()语法

(1)需求:返回性别为女的第一个文档

(2)命令格式:db.testCollection.findOne({“sex”:”女”});

(3)结果:

9、查询记录总数

(1)命令格式:db.testCollection.count();

(2)结果:

10、限制返回记录的起点

(1)命令格式:db.testCollection.find().skip(3).limit(5);

(2)结果:

11、结合运算

11.1、找到性别为男,并且分数在90分以上的学生

(1)命令格式:db.testCollection.find({“sex”:”男”,”score”:{“$gte”:90}});

(2)结果:

11.2、找到年龄在21岁以下或者是24岁以上的学生

(1)命令格式:db.testCollection.find({$or:[{"age":{"$lte":21}},{"age":{"$gte":24}}]});

(2)结果:

12、模运算

(1)需求:找到年龄对20进行模运算余1的学生

(2)命令格式:db.testCollection.find({“age”:{“$mod”:[20,1]}});

(3)结果:

13、范围查询

13.1、找到姓名是李四、王五的信息

(1)命令格式:db.testCollection.find({“name”:{“$in”:[“张三”,”李四”]}});

(2)结果:

13.2、找到姓名非李四、王五的信息

(1)命令格式:db.testCollection.find({“name”:{“$nin”:[“张三”,”李四”]}});

(2)结果:

14、数组

14.1、向testCollection集合中插入数组数据

db.testCollection.insert({"name":"数组1","sex":"男","age":24,"score":90,"course":["语文","数学","英语","物理","生物","化学"]});
db.testCollection.insert({"name":"数组2","sex":"男","age":23,"score":78,"course":["语文","化学"]});
db.testCollection.insert({"name":"数组3","sex":"男","age":24,"score":87,"course":["语文","数学","英语","化学"]});
db.testCollection.insert({"name":"数组4","sex":"男","age":22,"score":92,"course":["语文","物理","生物","化学"]});
db.testCollection.insert({"name":"数组5","sex":"男","age":21,"score":90,"course":["语文","数学","英语"]});

14.2、数组$all操作

(1)需求:查找所有学习了语文和数学的学生

(2)命令格式:db.testCollection.find({“course”:{“$all”:[“语文”,”数学”]}});

(3)结果:

14.3、数组下标索引查询(下标从0开始) 

(1)需求:查询第二门课学数学的学生

(2)命令格式:db.testCollection.find({“course.1”:”数学”});

(3)结果:

14.4、数组$size操作

(1)需求:查询只选了两门课的学生

(2)命令格式:db.testCollection.find({“course”:{“$size”:2}});

(3)结果: 

14.5、数组$slice操作

14.5.1、只要展示两门课程,即不需要列出所有的课程

(1)命令格式:db.testCollection.find({},{“course”:{“$slice”:2}});

(2)结果:

14.5.2、只要展示后两门课程

(1)命令格式:db.testCollection.find({},{“course”:{“$slice”:-2}});

(2)结果:

14.5.3、只要展示中间2到3门的课程

(1)命令格式:db.testCollection.find({},{“course”:{“$slice”:[1,1]}});

(2)结果:

说明:第一个数表示跳过的数据量,第二个数表示返回的数据量

注意:好像前面必须跟上slice操作的使用,好像必须跟上一个{}的操作,即与上一个其它条件,然后查询出来的结果,有course成员的文档,则只显示两项数据;没有course成员的文档,取决于与上的这个条件。

15、嵌套查询

15.1、向testCollection集合中插入测试数据

db.testCollection.insert({"name":"嵌套集合1","sex":"男","age":22,"parent":[{"name":"父亲","age":40},{"name":"母亲","age":37}]});
db.testCollection.insert({"name":"嵌套集合2","sex":"女","age":21,"parent":[{"name":"父亲","age":41},{"name":"母亲","age":39}]});

15.2、找到性别为男,父亲年龄为40的学生

(1)命令格式:

db.testCollection.find(
			{
				"$and":
					[
						{"sex":"男"},
						{"parent":{
							"$elemMatch":{"age":40}
							}
						}
					]
			}
		).pretty();

(2)结果:

16、成员判断

使用$exists判断某个成员的存在与否(true:存在;false:不存在)

(1)需求:找出包含parent成员的文档

(2)命令格式:db.testCollection.find({“parent”:{$exists:true}});

(3)结果:

17、Where条件查询

17.1、查找年龄小于21岁的学生

(1)命令格式(以下任意一种):

①db.testCollection.find(“this.age<21”).pretty();

②db.testCollection.find({“$where”:”this.age<21”}).pretty();

③db.testCollection.find({“age”:{“$lt”:21}}).pretty();

④db.testCollection.find(function(){return this.age<21}).pretty();

⑤db.testCollection.find({“$where”:function(){return this.age<21}}).pretty();

(2)结果:

 

17.2、查找年龄小于22岁,大于20岁的学生

(1)命令格式(以下任意一种): 

①db.testCollection.find({“$and”:[{“$where”:”this.age<22”},{“$where”:”this.age>20”}]}).pretty();

②db.testCollection.find({“$and”:[{“age”:{“$lt”:22}},{“age”:{“$gt”:20}}]}).pretty();

(2)结果:

18、正则运算实现模糊查询 

(1)基础语法:db.testCollection.find({“成员名”:正则表达式}).pretty();

(2)复杂语法:db.testCollection.find({“成员名”:{$regex:表达式}}).pretty();

例:查找姓”张”的学生

db.testCollection.find({“name”:/张/}).pretty();

db.testCollection.find({“name”:{“$regex”:/张/}}).pretty();

19、数据排序

19.1、 按成绩升序排序(1:升序;-1:降序)

(1)命令格式:db.testCollection.find().sort({score:1});

(2)结果:

19.2、自然排序(当初插入数据库的先后顺序)

(1)命令格式:db.testCollection.find().sort({$natural:1});

(2)结果:

20、更新操作

语法:db.集合名.update({条件},{修改后的内容},boolean1,boolean2);

说明

(1)第一个boolean1,true:当数据库中没有满足”{条件}”的文档时,增加文档;false:不增加。

(2)第二个boolean2,true:修改所有满足”{条件}”的文档;false:只修改第一条。

:将年龄为20岁的学生的成绩修改为95分

db.testCollection.update({“age”:20},{“$set”:{score:95}},false,true).pretty();

 21、删除数据

语法:db.集合名.remove(第一个可选参数,第二个可选参数);

说明:

(1)两个参数都不写,则删除集合中所有的文档;

(2)只写第一个参数{“条件”},表示删除所有符合条件的文档,因为此时第二个参数默认为false;

(3){“条件”,true},表示删除所有符合条件中的第一条文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值