十分钟了解Mongodb数据库
前言:本文可能比较长,主要分为3个部分。1。mongodb的简介。2。mongodb的安装。3。mongodb查询指令,大家可以根据选择进行阅读。
1。2什么是MongoDB
MongoDB是一个跨平台的,面向文档的数据库,是当前NoSQL数据库产品中最热
门的
一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最
像关
系数据库的产品。它支持的数据结构非常松散,是类似JSON的BSON格式,因此可以
存储
比较复杂的数据类型。
MongoDB的官方网站地址是:http:www。mongodb。org1。3MongoDB特点
MongoDB最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象
的查
询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建
立索
引。它是一个面向集合的,模式自由的文档型数据库。
具体特点总结如下:
(1)面向集合存储,易于存储对象类型的数据
(2)模式自由
(3)支持动态查询
(4)支持完全索引,包含内部对象
(5)支持复制和故障恢复
(6)使用高效的二进制数据存储,包括大型对象(如视频等)
(7)自动处理碎片,以支持云计算层次的扩展性
(8)支持Python,PHP,Ruby,Java,C,C,Javascript,Perl及C语言的驱动程
序,社区中也提供了对Erlang及。NET等平台的驱动程序
(9)文件存储格式为BSON(一种JSON的扩展)1。4MongoDB体系结构
MongoDB的逻辑结构是一种层次结构。主要有:
文档(document)、集合(collection)、数据库(database)这三部分组成的。逻辑结构是面
向用户的,用户使用MongoDB开发应用程序使用的就是逻辑结构。
(1)MongoDB的文档(document),相当于关系数据库中的一行记录。
(2)多个文档组成一个集合(collection),相当于关系数据库的表。
(3)多个集合(collection),逻辑上组织在一起,就是数据库(database)。
(4)一个MongoDB实例支持多个数据库(database)。
文档(document)、集合(collection)、数据库(database)的层次结构如下图:
1。5数据类型
基本数据类型
null:用于表示空值或者不存在的字段,{x:null}
布尔型:布尔类型有两个值true和false,{x:true}
数值:shell默认使用64为浮点型数值。{x:3。14}或{x:3}。对于整型值,可以使用
NumberInt(4字节符号整数)或NumberLong(8字节符号整数),
{x:NumberInt(3)}{x:NumberLong(3)}
字符串:UTF8字符串都可以表示为字符串类型的数据,{x:呵呵}
日期:日期被存储为自新纪元依赖经过的毫秒数,不存储时区,{x:newDate()}
正则表达式:查询时,使用正则表达式作为限定条件,语法与JavaScript的正则表达式相
同,{x:〔abc〕}
数组:数据列表或数据集可以表示为数组,{x:〔a,b,c〕}
内嵌文档:文档可以嵌套其他文档,被嵌套的文档作为值来处理,{x:{y:3}}
对象Id:对象id是一个12字节的字符串,是文档的唯一标识,{x:objectId()}
二进制数据:二进制数据是一个任意字节的字符串。它不能直接在shell中使用。如果要
将非utf字符保存到数据库中,二进制数据是唯一的方式2。Mac下MongoDB的安装:
1。访问MongoDB官方下载地址
官网地址是:MongoDBDownloadCenterMongoDB
1官网下载MongoDB的安装包。在usrlocal下新建mongodb文件夹
2。mongodb文件夹下新新建data,和log。用来存放数据和日志。
3。2创建配置文件mongodb。confcdusrlocalmongoDBmongodbserveretcvimmongodb。conf
4进入bin目录启动输入。mongodb启动mongodb
推荐一个mongodb客户端,NoSQLBoosterforMongoDB的客户端还是非常的好用的。你可以用这个来操作mongoDB
以上的安装方法,也适用于Linux,windows安装非常简单,就不做介绍了。3。Mongodb的常用命令:
2。2。1选择和创建数据库
选择和创建数据库的语法格式:use数据库名称
如果数据库不存在则自动创建
以下语句创建spit数据库usespitdb
2。2。2插入与查询文档
插入文档的语法格式:db。集合名称。insert(数据);
我们这里可以插入以下测试数据db。spit。insert({content:听说这个很不错呀,userid:1011,nickname:小雅,visits:NumberInt(902)})
查询集合的语法格式db。集合名称。find()
如果我们要查询spit集合的所有文档,我们输入以下命令db。spit。find()
这里你会发现每条文档会有一个叫id的字段,这个相当于我们原来关系数据库中表的主
键,当你在插入文档记录时没有指定该字段,MongoDB会自动创建,其类型是ObjectID
类型。如果我们在插入文档记录时指定该字段也可以,其类型可以是ObjectID类型,也
可以是MongoDB支持的任意类型。
输入以下测试语句:如果这个指令有问题,可以照着客户端提示敲一下也很简单的。db。spit。insert({id:1,content:我还是没有想明白到底为啥出错,userid:1012,nickname:小明,visits:NumberInt(2020)});db。spit。insert({id:2,content:加班到半夜,userid:1013,nickname:凯撒,visits:NumberInt(1023)});db。spit。insert({id:3,content:手机流量超了咋办?,userid:1013,nickname:凯撒,visits:NumberInt(111)});db。spit。insert({id:4,content:坚持就是胜利,userid:1014,nickname:诺诺,visits:NumberInt(1223)});
如果我想按一定条件来查询,比如我想查询userid为1013的记录,怎么办?很简单!只
要在find()中添加参数即可,参数也是json格式,如下:db。spit。find({userid:1013})
如果你只需要返回符合条件的第一条数据,我们可以使用findOne命令来实现db。spit。findOne({userid:1013})
如果你想返回指定条数的记录,可以在find方法后调用limit来返回结果,例如db。spit。find()。limit(3)
2。2。3修改与删除文档
修改文档的语法结构:
如果我们想修改id为1的记录,浏览量为1000,输入以下语句:db。spit。update({id:1},{visits:NumberInt(1000)})
执行后,我们会发现,这条文档除了visits字段其它字段都不见了,为了解决这个问题,
我们需要使用修改器set来实现,命令如下:db。spit。update({id:2},{set:{visits:NumberInt(2000)}})
这样就OK啦。
删除文档的语法结构:db。集合名称。remove(条件)
以下语句可以将数据全部删除,请慎用db。spit。remove({})
如果删除visits1000的记录,输入以下语句db。spit。remove({visits:1000})
2。2。4统计条数db。spit。count()
统计记录条件使用count()方法。以下语句统计spit集合的记录数db。spit。findOne({userid:1013})
2。2。5模糊查询
MongoDB的模糊查询是通过正则表达式的方式实现的。格式为:模糊查询字符串
例如,我要查询吐槽内容包含流量的所有文档,代码如下:db。spit。find({content:流量})
如果要查询吐槽内容中以加班开头的,代码如下:db。spit。find({content:加班})
2。2。6大于小于不等于
,,,这个操作符也是很常用的,格式如下:db。集合名称。find({field:{gt:value}})大于:fieldvaluedb。集合名称。find({field:{lt:value}})小于:fieldvaluedb。集合名称。find({field:{gte:value}})大于等于:fieldvaluedb。集合名称。find({field:{lte:value}})小于等于:fieldvaluedb。集合名称。find({field:{ne:value}})不等于:field!value
示例:查询吐槽浏览量大于1000的记录db。spit。find({visits:{gt:1000}})
2。2。7包含与不包含
包含使用in操作符。
示例:查询吐槽集合中userid字段包含1013和1014的文档db。spit。find({userid:{in:〔1013,1014〕}})
2。2。8条件连接
我们如果需要查询同时满足两个以上条件,需要使用and操作符将条件进行关联。(相
当于SQL的and)
格式为:and:〔{},{},{}〕
示例:查询吐槽集合中visits大于等于1000并且小于2000的文档db。spit。find({and:〔{visits:{gte:1000}},{visits:{lt:2000}}〕})
如果两个以上条件之间是或者的关系,我们使用操作符or进行关联,与前面and的使用
方式相同
格式为:
or:〔{},{},{}〕
示例:查询吐槽集合中userid为1013,或者浏览量小于2000的文档记录db。spit。find({or:〔{userid:1013},{visits:{lt:2000}}〕})
2。2。9列值增长
如果我们想实现对某列值在原有值的基础上进行增加或减少,可以使用inc运算符来实现db。spit。update({id:2},{inc:{visits:NumberInt(1)}})
感谢大家的阅读,请转发,点赞或者收藏。关于MongoDB。我还会继续更新一篇文章。
2021年顶级互联网技术总结Richard在本周TheNewStack的专栏中,我介绍了我的年度最佳互联网技术。我今年的清单:WebAssemblyFigmaNext。js12LitWebComponents英伟达Om……
遏制超长预售,需要监管超长待机来源:北京青年报张淳艺冬天买的衣服快到夏天了还没发货,预售是在考验我对店家的忠诚度吗?谁说顾客是上帝?现在的卖家才是!近期,有关网红电商预售的话题引发了大量讨论,多……
如何调整助听器?初次佩戴助听器有个适应过程,声音听着不合适,要到专业的验配中心跟验配师沟通,具体描述是什么环境什么声音听的不好,验配师会根据您描述的情况适当给与调整,描述的越细致,调节的就越精……
国内一线手机品牌变革,realme位列中国手机市场Q1增速第伴随着全球经济形势的日趋好转,国内智能手机市场也开始出现回暖的迹象。近日,全球知名数据调研机构Counterpoint发布了一份统计报告,数据显示,2021Q1中国手机市场销量……
个人认为360手机比小米手机的性价比还高,为什么就是火不起来360手机总共3条线,分别是F。N。Q,对应的是低中高的定位。最火的还是中端N这条线。刚开始360n4出来的时候,主打大内存和长续航,配置也确实如此,当时配备4GB大运存和40……
滴滴美国退市谁亏惨?柳传志快被查了?坚决不让滴滴香港上市,之所以还要上市是因为在美国要溢价回购,会亏一大笔,在港上市圈钱了才能拿老百姓的钱去补窟窿。风投亏惨高管亏惨,如果国内不给它上市融资估计可能破产老美可……
元宇宙再次热度提升,是否仍充满质疑?元宇宙从去年开始,热点居高不下,国内个股疯狂飙涨,科技公司疯狂入局去年脸书曝出更名为meta,将元宇宙概念推高,国际科技公司纷纷表示已经部署元宇宙战略。国内腾讯,阿里,字……
微信支付宝收款码将不能再用???让人很是懊恼啊,让人不知所措看到这个新闻,真是吓人一跳,买东西都不能扫码支付了吗???很多网友也纷纷提出质疑:出门又得带钱包银行卡了吗??那得多费劲,和原来没有区别了央行今年10月13日发布了新规,……
美股三大指数均跌超1。5科技股集体下跌e公司讯,美股三大指数集体收跌,均创2年来最大季度跌幅,道指跌1。56,一季度累跌4。57;纳指跌1。54,一季度累跌9。1;标普500指数跌1。56,一季度累跌4。94。富途……
兴业银行推出首张跨境电商专属联名借记卡3月28日,兴业银行携手美国运通与连连国际,推出国内首张为跨境电商个人卖家专属打造的、打通境内外收付款功能的人民币借记卡兴业银行美国运通连连联名借记卡,并在广州地区试点发行,后……
谁拍的花朵更有创意,更好看?欢迎拿出来分享交流(请备注拍摄设我用手机p30拍几多月季花请大家欣赏!佳能相机十微距镜头我就是用中华有为手机拍照,拍出相机的水平,不信你可以自己来看看。用的是p30por。我:愛种花,日复一……
如果腾讯倒了,有哪个APP能在两天内替代微信?分析一下,腾讯在我们日常生活中最常用的功能是什么,社交,资金往来,游戏娱乐,新闻,大概就是这几个吧,基本每个人都在用。社交目前没有哪个App能迅速取代微信和QQ的地位,主……
搭2。0T引擎配置可选,长安UNIK新增车型上市,售14。5大多数朋友在买车的时候总是会纠结到底选择哪个配置的,有的汽车,即使高配车型也会有所不同,更不用说价格实惠些的低配车型了,鱼与熊掌不可兼得便在于此。此时,私人定制的概念便浮出水面……
老房改造,零冷水佳尼特燃气热水器升级CiaoBello,我是老房。魔都房价寸土寸金,也只能买得起老破小二手房了。当年换房的时候基本把原来的家装全拆了新装,不过上家留下的燃气热水器看着还不错,也就没动。……
了解沃尔沃售后,你才会明白什么是真正的豪车品牌为了让车主能够享受到专业、可靠、省心、物超所值的售后服务,沃尔沃于2020年推出了全新的服务理念。很多体验过沃尔沃售后服务的小伙伴都对沃尔沃大为赞赏,甚至给出了当你享受过沃尔沃……
专注集团战略管理!许家印卸任恒大地产董事长8月18日,上交所公告显示,恒大地产集团完成内部人事调整,董事长由许家印变更为赵长龙,法人、总经理由柯鹏变更为赵长龙,本次人事变更未涉及公司管理架构、股权的变化,许家印仍为恒大……
击碎行业潜规则,苏宁618组重拳出击随着气温日渐升高,空调、冰箱等常用家电的销量也日益走俏。然而,就在家电产品向更高端、智能化目标快速挺进时,售后服务却并未与之齐头并进,小问题大维修、暴利维修收费、强制消费……
大厂架构师大神整理!超详细Linux学习笔记PDF文档想进军IT行业的你,为了学习Linux收藏多少资料了?是不是学着学着就不知道自己学到哪了,或者学着后面的忘着前面的?然后放弃后过一段时间又开始找资料开始学习?其实自学Li……
博物馆里看鄂伦春族与傻狍子密切关系有了这身行头雪地里能睡觉鄂伦春族是中国东北部地区人口最少的少数民族之一,是狩猎民族。由于狩猎的生产特点,鄂伦春族的服饰多取自兽皮,尤以狍皮为最多。鄂伦春族人的服饰充分显示了狩猎民族的特色。鄂伦春……
农夫山泉渠道狠角色文新经济沸点小新9月8日,农夫山泉港股上市。开盘便涨85。12,报价39。8港元,wind数据显示,农夫山泉市值达到4453亿港元,但至中午涨幅跌至54,市值回落3……
机器人行走轴轨道组成机器人行走轨道系统即机器人行走轨道系统,主要包括部件有:1、机器人轨道基座库比克第七轴本体轨道基座采用高强度型钢与优质钢板焊接而成,大限度的保障其精度,有效避免变形……
健澜科技人工智能产品需从临床实际出发助力优质医疗资源下沉近日,上海长征医院放射诊断科主任、中华医学会放射学分会主任委员刘士远做客人民好医生客户端。他表示,近年来,人工智能在医疗行业应用发展迅速,在疾病预测、诊断、提供治疗建议方面发挥……
赛力斯华为智选SF5打破里程焦虑目前国内新能源市场十分火热,众多车企都投身其中,而赛力斯华为智选SF5是现在市场热议的一款车型,赛力斯华为智选SF5打破里程焦虑,不受充电设施半径限制的优点,得到了业内人士的认……
Android的Application中onCreate执行。获取进程名称privateStringgetProcessName(Contextcontext){ActivityManageram(ActivityManager)con……