MongoDB(课时9 范围运算)】的更多相关文章

3.2.4.9 正则运算 如果想实现模糊查询,必须使用正则表达式,而且正则表达式使用的语言是Perl兼容的正则表达式的形式. 要实现正则使用,则按照如下的定义格式: 基础语法:{key : 正则标记} 完整语法:{key : {"$regex" : 正则标记, "$options" : 选项}} options主要是设置正则的信息查询标记: “i”:忽略字母大小写: “m”:多行查找: “x”:空白字符串除了被转义的或在字符类中以外的完全被忽略:如果内容里面不存在换…
3.4.2.3 求模 模运算使用“$mod”来完成,语法: {$mod : [除数,余数]} 范例:求模 db.students.find({"age" : {"$mod" : [20, 1]}}).pretty() 表示对年龄求模,除数20,余数1,即找出年龄是21岁.…
3.2.2.4 范围查询 只要是数据库,必须存在有“$in”(在范围之中).“$nin”(不在范围之中). 范例:查询姓名是“张三”,“李四”,“王五” db.students.find({"name" : {"$in" : ["张三",  "李四", "王五"]}}).pretty() 范例:不在范围中 db.students.find({"name" : {"$nin&qu…
1.数据库之中支持的的SQL语句是由IBM开发出来的,使用并不麻烦,就是几个简单的单词:select, from, where,  group by, having, order by.目前最流行的数据库还是关系型数据库. 但是后来移动技术(比如云计算,大数据)的发展,关系型数据存储容量有限,NoSQL数据库重新进行了开发(所以NoSQL是Not Only SQL的缩写,并不是说SQL数据库没用),但NoSQL数据库依然离不开关系型数据库. 2.MongoDB数据库是发展最好的一个NoSQL数据…
很多同学因为对MongoDB不熟悉,加之应用的不是很多,有时候会认为MongoDB数据库对一些功能不支持,或者认为支持不好.今天我们 演示一下 MongoDB对“加减乘除”的使用. 在MongoDB数据库中“加减乘除”运算,又称为 数学表达式(mathematical expression:或算术表达式),主要用于操作数值. 1.$add操作符(+) 1.1 语法及功能介绍 $add 操作符主要用于将一组数字相加:也可以用于在指定时间上添加一定的时间间隔.时间间隔单位为milliseconds(…
点击了解更多Python课程>>> 全网最新最全python高级工程师全套视频教程学完月薪平均2万 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加易学.易读,非常适合快速开发. python的优势? Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,它的面向对象甚至比java和C#.net更彻底. 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无限的,国内:豆瓣.搜狐.金山.腾讯.网易.百度等国内知名…
简述 mapReduce从字面上来理解就是两个过程:map映射以及reduce化简.是一种比较先进的大数据处理方法,其难度不高,从性能上来说属于比较暴力的(通过N台服务器同时来计算),但相较于group以及aggregate来说,功能更强大,并更加灵活. 映射过程:先把某一类数据分组归类,这里的映射过程是支持分布式的,一边遍历每一台服务器,一边进行分类. 化简过程:然后再在分组中进行运算,这里的化简过程也是支持分布式的,在分类的过程中直接运算了.也就是说如果是一个求和的过程,先在a服务器分组求和…
group 语法 db.collection.group({ key:{field:1},//按什么字段进行分组 initial:{count:0},//进行分组前变量初始化,该处声明的变量可以在以下回调函数中作为result的属性使用 cond:{},//类似mysql中的having,分组后的查询返回 reduce: function ( curr, result ) { }, //The function takes two arguments: the current document…
group 语法   db.collection.group({ key:{field:1},//按什么字段进行分组 initial:{count:0},//进行分组前变量初始化,该处声明的变量可以在以下回调函数中作为result的属性使用 cond:{},//类似mysql中的having,分组后的查询返回 reduce: function ( curr, result ) { }, //The function takes two arguments: the current documen…
3.4.2.6 嵌套集合运算 MongoDB数据库里每个集合数据可以继续保存其它的集合数据.例如:有些学生信息中需要保存家长信息. 范例: 增加数据 db.students.insert({"name" : "高大拿 - A", "sex" : "男", "age" : 19, "score" : 76, "address" : "朝阳区", &q…
mongodb提供地理位置运算功能,比较常用的场景比如,先判断用户所在的街道,然后看看街道附近有啥餐厅,然后算算用户与餐厅的距离什么的,官网里提供了比较详细的demo介绍不同api的用法 此处记录下dotnet core中的用法 首先安装官网提供的nuget安装包:MongoDB.Driver 定义一个点,线或者多边形进而使用驱动时通常有两种方式,以直线为例: A.轻松些的方式,可以先获取GeoJsonLineString<GeoJson2DCoordinates>的实例,比较方便,获取实例的…
mapReduce 随着"大数据"概念而流行. 其实mapReduce的概念非常简单, 从功能上说,相当于RDBMS的 group 操作 mapReduce的真正强项在哪? 答:在于分布式,当数据非常大时,像google,有N多数据中心, 数据都不在地球的一端,用group力所不及. group既然不支持分布式,单台服务器的运算能力必然是有限的. 而mapRecuce支持分布式,支持大量的服务器同时工作, 用蛮力来统计. mapRecuce的工作过程: ① map: 这个称为映射函数,…
聚合运算之group 语法: db.collection.group( { key:{key1:1,key2:1}, cond:{}, reduce: function(curr,result) { }, initial:{}, finalize:function() { } } ) key: 分组字段 cond:查询条件 reduce:聚合函数 initial:初始化 finalize:统计一组后的回调函数 #查询每个栏目下的商品数量 db.goods.group( { key:{cat_id…
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.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.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. 很多时候按照以上代码…