0
点赞
收藏
分享

微信扫一扫

初识Mongdb之数据查询篇(一)

目录

​​数据查询​​

​​介绍​​

​​简单查询​​

​​无约束查询​​

​​查询条数​​

​​约束查询​​

​​and 查询​​

​​or 查询​​

​​大于查询(>)​​

​​小于查询(<)​​

​​小于等于,大于等于查询​​

​​不等于查询​​

​​高级查询​​

​​包含($in)和不包($nin)含查询​​

​​not 查询,模糊查询(like)​​

​​数组特定查询(all)​​

​​Limit(num)​​

​​Skip()​​

​​sort()排序​​

​​设计查询字段和返回字段​​

​​简单插入​​

​​总结​​

​​每文一语​​

数据查询

介绍

​​下面的数据集都是模拟的虚拟数据集。如果有需要可以点击此处下载​​!

直接在Navicat上运行下载文件即可,就会产生数据集,用于查询的练习

MongoDB 查询文档使用 find() 方法。find() 方法以非结构化的方式来显示所有文档。MongoDB 查询数据的语法格式如下:

db.collection.find(query, projection)

collection:集合(类似于MySQL里面的表)

query :可选,使用查询操作符指定查询条件。

projection :可选,指定返回的键。

说实话mongdb的查询语法基本就是这样,但是就只是这些吗?那肯定不是,如果说看了那些复杂的语法,还不如把实际问题简化,把学习问题放在实际中,那么我们下面就开始介绍查询案例,希望对你有所帮助!

简单查询

无约束查询

不加任何约束条件的查询,返回的是全部的信息

//无约束查询
db.students.find();

初识Mongdb之数据查询篇(一)_mysql

查询条数

db.students.count();

初识Mongdb之数据查询篇(一)_数据查询案例_02

约束查询

在MySQL里面我们经常用到where来约束我们的查询,用字段返回我们需要的,那么在mongdb我们同样也可以这样,下面我们首先来看看这个对比表:

mongdb-MySQL对比表

操作

格式

范例

RDBMS中的类似语句

等于

​{<key>:<value>​​}

​db.col.find({"by":"王小王"}).pretty()​

​where by = '王小王'​

小于

​{<key>:{$lt:<value>}}​

​db.col.find({"likes":{$lt:50}}).pretty()​

​where likes < 50​

小于或等于

​{<key>:{$lte:<value>}}​

​db.col.find({"likes":{$lte:50}}).pretty()​

​where likes <= 50​

大于

​{<key>:{$gt:<value>}}​

​db.col.find({"likes":{$gt:50}}).pretty()​

​where likes > 50​

大于或等于

​{<key>:{$gte:<value>}}​

​db.col.find({"likes":{$gte:50}}).pretty()​

​where likes >= 50​

不等于

​{<key>:{$ne:<value>}}​

​db.col.find({"likes":{$ne:50}}).pretty()​


​  where likes != 50​


or

{$or:[{key1: value1}, {key2:value2}]}

db.col.find($or:[{c:{$gte:85}},{e:{$gte:90}}])

where like =123 or like=456

and

{key:123,key:456}

db.col.find({"like":"123","like":456})

where like=123 and 456

and 查询

//查询身高是170和身高是160的数据,返回全部信息
db.students.find({height:170,height:160});

初识Mongdb之数据查询篇(一)_mongodb_03

or 查询

//查询身高大于175的或者低于160的学生信息
db.students.find({
$or: [{
height: {
$gt: 175
}
}, {
height: {
$lt: 160
}
}]
})

初识Mongdb之数据查询篇(一)_数据查询案例_04

大于查询(>)

//查询身高大于175的学生,性别为1的学生
db.students.find({height:{$gt:175},gender:1})

初识Mongdb之数据查询篇(一)_mongodb_05

小于查询(<)

//查询身高小于160的学生,性别为0的学生
db.students.find({height:{$lt:160},gender:0});

初识Mongdb之数据查询篇(一)_mysql_06

小于等于,大于等于查询

这里我就不给出演示了,直接上代码:

//查询大于等于175,小于等于175的学生信息
db.students.find({height:{$gte:175}});

db.students.find({height:{$lte:175}});

不等于查询

//查询身高不等于175的学生
db.students.find({height:{$ne:175}});

对于一些基本的操作比较的查询差不多就是这样,唯一需要注意的就是or查询,需要把条件放在列表里面,里面根据你的需要嵌套你的字典约束条件,在mongdb里面如果是字符串可以不用加引号,但是如果是数值型的,加了引号反而会报错!

高级查询

包含($in)和不包($nin)含查询

//查询年级在2015和2017里面的学生信息,避免写多个and
db.students.find({
grade: {
$in: [2015, 2016, 2017]
}
});

//查询年级不在2015和2017里面的学生信息,避免写多个and
db.students.find({
grade: {
$nin: [2015, 2016, 2017]
}
});

not 查询,模糊查询(like)

“$not”是元条件句,即可以用在其他条件之上(正则和文档)。$not和$nin的区别是$not可以用在任何地方$nin只能用到集合上

//查询name不包含颢炜的信息,类似于MySQL的模糊查询 like
db.students.find({
name: {
$not: /颢炜/
}
});

初识Mongdb之数据查询篇(一)_mysql_07

初识Mongdb之数据查询篇(一)_mongodb_08

//模糊查询名字里面的联想词
db.students.find({
name:/冬睿/
})

初识Mongdb之数据查询篇(一)_mysql_09

数组特定查询(all)

这个要特定与特定的场景之下,比如在字典嵌套字典的前提之下,在一个文档集合里面,水果的类别有:苹果,梨子,香蕉,我们需要获取水果里面同时包含香蕉,苹果的信息,我们就可以使用该语法:

初识Mongdb之数据查询篇(一)_数据库_10

Limit(num)

获取我么需要的前面几行,为了不输出全部的信息行,我们可以使用这个约束条件来展示里面的特定信息

//查询年级不在2015和2017里面的学生信息,避免写多个and,显示前面10个
db.students.find({
grade: {
$nin: [2015, 2016, 2017]
}
}).limit(10);

Skip()

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
//查询年级不在2015和2017里面的学生信息,避免写多个and,从第三个信息开始展示,总共显示前面10个
db.students.find({
grade: {
$nin: [2015, 2016, 2017]
}
}).limit(10).skip(2);

sort()排序

在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。

//查询年级在2015和2017里面的学生信息,避免写多个and,同时按照他们的班级进行排序,升序
db.students.find({
grade: {
$in: [2015, 2016, 2017]
}
}).sort({grade:-1});

初识Mongdb之数据查询篇(一)_数据查询案例_11

设计查询字段和返回字段

有时候我们在里面进行查询的时候,我们发现条件过于的复杂的时候我们不能够比较有结构的写出,这个时候我们可以使用var 变量来存储我们的查询条件

// 查询身高在160以下,或者身高在170以上的学生信息
db = db.getSiblingDB('cqust');
var 查询条件 = {'grade':2019,'role':'student','major':'大数据', $or:[{'height':{$lt:160}}, {'height':{$gt:175}}] };
var 返回字段 = {};
db.students.find(查询条件, 返回字段);

初识Mongdb之数据查询篇(一)_mongodb_12

// 查询大数据2019级1班和2班的学生
db = db.getSiblingDB('cqust');
var 查询条件 = {'grade':2019,'role':'student','major':'大数据', $or:[{'class':1}, {'class':2}] };
var 返回字段 = {};
db.students.find(查询条件, 返回字段);

简单插入

var mydocs = [
{
"lastname" : "Tan",
"firstname" : "Guangyu",
"role" : "teacher",
"teacher_id" : "2019814",
"title" : "讲师",
"courses" : [
{ "coursename" : "nosql" },
{ "coursename" : "mysql" },
{ "coursename" : "python" },
{ "coursename" : "linux" },
{ "coursename" : "kettle" }
]
},
{
"lastname" : "Tan",
"firstname" : "Yi",
"role" : "student",
"student_id" : "2019000001",
"grade" : "2019",
"class" : "1",
"score" : 80
},
{
"lastname" : "Tan",
"firstname" : "Er",
"role" : "student",
"student_id" : "2019000002",
"grade" : "2019",
"class" : "1",
"score" : 70
}
];

db.collection2.insert(mydocs);

总结

我们在进行查询的时候,可能会联想MySQL的查询结构,以此类推mongdb里面的查询,在mongdb里面查询,我们需要对条件进行包装,也就是字典封装,条件必然是在键值对里面,对于多元操作键对应的值,值里面是字典,操作符前面对应的$符号,后面对应条件的英文单词首字母,比如小于:less than(lt),等于:e,不等于:n,对于$or需要注意里面是数组(列表),然后里面就是键值对的形式并列,总的来说,多看,多练,最后自然也就像MySQL那样游刃有余了!

每文一语

岁月极美,在于它的流逝;春花,秋月,夏日,冬雪。时光就像落在炭火上的水珠,忽的一下就散了......


举报

相关推荐

0 条评论