MongoDB(课时7 逻辑运算)】的更多相关文章

3.4.2.2 逻辑运算 逻辑运算主要三种类型:与($and),或($or),非($not.$nor). 范例:查询年龄在20~21岁的学生信息 db.students.find({"age" : {"$gte" : 20, "$lte" : 21}}).pretty() 在逻辑运算的时候"and"的连接是最容易的,因为只需要利用","分隔条件即可. 范例:查询年龄大于19岁,或者成绩大于90分的学生信息…
1.数据库之中支持的的SQL语句是由IBM开发出来的,使用并不麻烦,就是几个简单的单词:select, from, where,  group by, having, order by.目前最流行的数据库还是关系型数据库. 但是后来移动技术(比如云计算,大数据)的发展,关系型数据存储容量有限,NoSQL数据库重新进行了开发(所以NoSQL是Not Only SQL的缩写,并不是说SQL数据库没用),但NoSQL数据库依然离不开关系型数据库. 2.MongoDB数据库是发展最好的一个NoSQL数据…
点击了解更多Python课程>>> 全网最新最全python高级工程师全套视频教程学完月薪平均2万 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加易学.易读,非常适合快速开发. python的优势? Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,它的面向对象甚至比java和C#.net更彻底. 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无限的,国内:豆瓣.搜狐.金山.腾讯.网易.百度等国内知名…
3.7.4 MapReduce MapReduce 是整个大数据的精髓所在(实际中别用,因为在MongoDB中属于最底层操作). MapReduce是一种计算模型,简单的说就是将大批量的工作分解执行,然后再将结果合并成最终结果. MapReduce 就是分为两步处理数据: Map:将数据分别取出 Reduce:负责数据的最后的处理 范例:建立一组雇员数据 db.emps.insert({, }); db.emps.insert({, }); db.emps.insert({, }); db.em…
3.7.3 group操作 使用“group”操作可以实现数据的分组操作,MongoDB里将集合依据不同的的key进行分组操作,并且每个组产生一个处理文档. 范例:查询年龄大于等于19岁的学生信息,并且按照年龄分组 db.runCommand({"group" : { "ns" : "students", "key" : {"age" : true}, "initial" : {&quo…
3.7.2 消除重复数据 在SQL中对于重复的数据可以使用"DISTINCT"消除,在MongoDB中依然支持.(distinct不同的) 范例:查询所有name的信息 本次的操作没有直接的函数支持,只能够利用runCommand()函数. runCommand()直接通过db调用,不经过集合调用,所以在runCommand()里必须明确指出操作的集合是哪个. db.runCommand({"distinct" : "students", &qu…
3.7 聚合(重点) 信息的统计操作就是聚合(直白:分组统计就是一种聚合操作). 3.7.1 取的集合的数据量 对于集合的数据量而言,在MongoDB里面直接使用count()函数就可以完成. 范例:统计students表中的数据量 db.students.count() 范例:模糊查询 db.students.count({"name" : /张/i}) 在进行信息查询的时候,不设置条件要比设置条件查询快,也就是说在之前的代码编写里面不管是查询全部还是模糊查询,实际上最终都使用模糊查…
3.6.4 地理信息索引 地理信息索引分为两类:2D平面索引,2DSphere球面索引.在2D索引里面基本上能够保存的信息都是坐标,而且坐标保存的就是经纬度坐标. 范例:定义一个shop的集合 db.shop.insert({loc : [10, 10]}) # loc表示坐标 db.shop.insert({loc : [11, 10]}) db.shop.insert({loc : [10, 11]}) db.shop.insert({loc : [12, 15]}) db.shop.ins…
3.6.3 全文索引 在一些信息管理平台上经常需要进行信息模糊查询,最早的时候是利用了某个字段上实现的模糊查询,但这个时候返回的信息并不会很准确,因为只能够查A字段或B字段,而在MongoDB里面实现了非常简单的全文检索. 范例:定义一个新的集合 db.news.insert({"title" : "wangke", "content" : "lol"}) db.news.insert({"title" :…
3.6.2 过期索引 在一些程序的站点会出现若干秒之后信息被删除的情况,例如:手机信息验证码,那么在MongoDB里面可以轻松实现过期索引.但这个时间往往不怎么准确. 范例:设置过期索引(实现过期索引,需要保存一个时间信息.) db.phones.ensureIndex({"time" : 1}, {expireAfterSeconds : 10}) # 设置10秒后过期(expire 终止,死亡) 范例:在一个phones集合插入数据 db.phones.insert({"…
3.5 索引(重点) 任何数据库中,索引都是一种提升数据库检索性能的手段,这一点在MongoDB数据库中同样是存在的,MongoDB数据库里面存在两种索引创建:一是自动创建,另外是手工创建. 范例:重新准备一个新的简单集合 此时在students集合上并没有设置任何的索引,下面通过getIndexes()函数来观察在students集合里面已经存在的索引内容. 范例:查询默认状态下的students集合的索引内容 db.students.getIndexes() 会发现存在一个“_id”列的索引…
3.5 游标(重点) 所谓游标就是指数据可以一行行的进行操作,非常类似于ResultSet数据处理.在MongoDB里对游标的控制使用find()函数就可以返回游标.对于返回的游标如果想进行操作,使用两个函数: 判断是否有下一行数据:hasNext() 取出当前数据:next() var cursor = db.students.find() //db.students.find()返回students集合中数据 cursor.hasNext() cursor.next() 以上是游标的操作形式…
3.4.4 删除数据 在MongoDB里面删除数据使用“remove()”.但是这个函数有两个可选项: 删除条件:满足条件的数据被删除. 只删除一个数据:设置为true或者是1表示只删除一个. 范例:删除所有姓名里面带有“谷”的信息 db.students.remove({"name" : /谷/}) # 默认情况下会全部删除 范例:删除姓名带有“高”的信息,要求只删除一个 db.students.remove({"name" : /高/}, true) db.st…
3.4.3.2 修改器(原子操作) 对MongoDB数据库而言,数据的修改会牵扯到内容的变更,结构的变更(包含数组),所以在MongoDB在设计的时候就提供有一系列的修改器的应用,那么像之前使用的“$set”就是一种修改器. 1. $inc:主要针对于一个数字字段,增加某个数字字段的数据内容: 语法:{"$inc" : {"成员" : 内容}} 范例:将所有年龄为21岁的学生成绩一律减少30,年龄加1 db.students.update({"age&qu…
3.4.3 数据更新操作 MongoDB数据存的是副本数据, 最终的数据还要保存在传统的数据库里,所以如果关系型数据库里数据变了,最好的方法是删除里面的MongoDB数据重新插入. 在MongoDB里面对于数据的更新操作提供了两类函数:save().update() 3.4.3.1 函数的基本使用 修改数据最直接的使用函数是update()函数,但是update()函数语法要求很麻烦. 语法:db.集合.update(更新条件, 新的对象数据, upsert, multi) 新的对象数据:里面可…
3.4.2.11 数据分页显示 在MongoDB里面的数据分页显示也是符合于大数据要求的操作函数: skip(n):表示跨过多少数据行 limit(n):取出的数据行的个数限制 范例:分页显示(比如显示第一页,skip(0),limit(3)) db.students.find().skip(0).limit(3).sort({"age" : -1}).pretty() # 跨过0条,显示3条,年龄按降序排列 范例:分页显示(比如显示第二页,skip(3),limit(3)) db.s…
3.4.2.10 数据排序 在MongoDB里数据排序操作使用“sort()”函数,在进行排序的时候可以有两个顺序:升序(1),降序(-1). 范例:排序 db.students.find().sort({"score" :-1}).pretty() # 成绩按降序排列 但是在进行排序的过程里面有一种方式称为自然排序.按照数据保存的先后顺序排序,使用“$natural”. 范例:自然排序 db.students.find().sort({"$natural" : -…
3.2.4.9 正则运算 如果想实现模糊查询,必须使用正则表达式,而且正则表达式使用的语言是Perl兼容的正则表达式的形式. 要实现正则使用,则按照如下的定义格式: 基础语法:{key : 正则标记} 完整语法:{key : {"$regex" : 正则标记, "$options" : 选项}} options主要是设置正则的信息查询标记: “i”:忽略字母大小写: “m”:多行查找: “x”:空白字符串除了被转义的或在字符类中以外的完全被忽略:如果内容里面不存在换…
3.4.2.8 条件过滤 关系型数据库开发对于数据的筛选,想到的一定是where语句,MongoDB里面提供的是"$where". 范例:使用where进行数据的查询 db.students.find({"$where" : "this.age>20"}).pretty() db.students.find("this.age>20").pretty() 这里的this表示逐条的判断. 对于“$where”是可以简…
3.4.2.6 嵌套集合运算 MongoDB数据库里每个集合数据可以继续保存其它的集合数据.例如:有些学生信息中需要保存家长信息. 范例: 增加数据 db.students.insert({"name" : "高大拿 - A", "sex" : "男", "age" : 19, "score" : 76, "address" : "朝阳区", &q…
3.4.2.5 数组查询 MongoDB里面支持数组保存,一旦支持数组保存,就需要对于数组的数据进行匹配. 范例:插入一部分数组内容 课程是数组的形式(截图时少截一条信息) 此时数据包含数组内容,而后需要针对数组数据进行判断,可以使用几个运算符:$all,$size,$slice,$elemMatch. 范例:查询同时参加语文和数学课程的学生 现在两个数组内容都需要查询,所以使用“{"$all, [内容1,内容2,...]"}” db.students.find({"cour…
3.3 MongoDB的基本操作 在MongoDB数据库里面存在数据库的概念,但没有模式(所有的信息都是按照文档保存的),保存数据的结构是BSON结构,只不过在进行一些数据处理的时候才会使用到MongoDB自己的一些操作. 1.使用mldn数据库:use mldn 实际上这时候并不会创建数据库,只有在数据库里保存集合数据之后才能真正创建数据库. 2.创建一个emp集合:db.createCollection("emp") 这个时候mldn数据库才会真正存在. 3. 很多时候按照以上代码…
3.7.5.聚合框架(核心) MapReduce功能强大,但是它的复杂度和功能一样强大,那么我们需要MapReduce的功能,使用聚合框架中的聚合函数:aggregate(). 3.7.5.1.group操作 group主要进行分组的数据操作. 范例:实现聚合查询的功能 db.emps.aggregate([{"$group" : {"_id" : "$job", job_count : {"$sum" : 1}}}])…
3.6.1 唯一索引 唯一索引的主要目的是用在某一个字段上,使该字段的内容不重复. 范例:创建唯一索引 db.students.ensureIndex({"name" : 1}, {"unique" : true}) 在name字段上的内容绝对不允许重复. 范例:在students集合里面增加重复的数据 db.students.insert({"name" : "张三", "sex" : "女&q…
3.4.2.7 判断某个字段是否存在 使用“$exists”可以判断某个字段是否存在,如果设置为true表示存在,false表示不存在. 范例:查询具有parents成员的数据 db.students.find({"parents" : {"$exists" : true}}).pretty() 范例:查询不具有course成员的数据 db.students.find({"course" : {"$exists" : fals…
3.2.2.4 范围查询 只要是数据库,必须存在有“$in”(在范围之中).“$nin”(不在范围之中). 范例:查询姓名是“张三”,“李四”,“王五” db.students.find({"name" : {"$in" : ["张三",  "李四", "王五"]}}).pretty() 范例:不在范围中 db.students.find({"name" : {"$nin&qu…
3.4.2.3 求模 模运算使用“$mod”来完成,语法: {$mod : [除数,余数]} 范例:求模 db.students.find({"age" : {"$mod" : [20, 1]}}).pretty() 表示对年龄求模,除数20,余数1,即找出年龄是21岁.…
支持关系查询操作:大于($gt),小于($lt),大于等于($gte),小于等于($lte),不等于($ne ),等于(key:value 或 $eq).想让这些操作正常使用,需要准备一个数据集合. 范例:定义一个学生信息集合 范例:查询姓名是张三的学生信息 范例:查询年龄大于19岁的学生信息 db.students.find({"age":{"$gt":19}}).pretty() 范例:查询成绩大于等于90分的学生 db.students.find({"…
3.4.2 数据查询 对于数据的查询操作核心语法: db.集合名称.find({查询条件}, {设置显示的字段}) 范例:没查询条件 db.info.find() 范例:有查询条件,查询出url为"www.mldn.cn"的数据 db.info.find({"url" : "www.mldn.cn"}) 进行数据查询的时候是按照JSON的形式设置的相等关系.它的整个开发之中都不可能离开JSON数据. 对于设置的显示字段严格来讲称为数据的投影操作.…
3.4 数据操作(重点) 只要是数据库就绝对离不开最核心的功能:CRUD(增加Create.读取查询Retrieve.更新Update.删除Delete),除了增加之外,其他都很麻烦,最麻烦的是修改. 3.4.1 数据的增加 使用"db.集合.insert()"可以实现数据的增加操作. 范例:增加一个简单数据 db.infos.insert({"url" : "www.mldn.cn"}) 范例:增加数组(用中括号) BulkWriteResul…