java架构之路-(NoSql专题)MongoDB快速上手
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 1970年 E.F.Codd's提出的关系模型的论文 "A relational model of data for large shared data banks",这使得数据建模和应用程序编程更加简单。通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
这次我们来说一下我们的MongoDB,MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
一、安装
1>下载,地址输入https://www.mongodb.com/download-center/community,选择社区版本即可。到Linux客户端下输入$ wget https://fastdl.mongodb.org/linux/mongodb-linux-s390x-rhel72-4.2.1.tgz
2>解压,输入$ tar -zxvf mongodb-linux-s390x-rhel72-4.2.1.tgz,创建一个一个数据库的物理文件存储路径,我一般定义为/data/mongoData;$ mkdir -p /data/mongoData。
3>启动测试,在安装路径下输入 $ ./bin/mongod --dbpath=/data/mongoData/即可,--dbpath就是我们刚才创建的路径。(别关闭)
4>再打开一个客户端,输入$ ./bin/mongo --host=127.0.0.1 --port=27017。进入到我们的客户端。输入db version();即可查看到我们的版本信息。安装成功。
5>貌似一直开着客户端不太好用,我们写一个配置文件。创建一个conf目录。输入 $ vim conf/mongodb.conf 添加 如下内容
dbpath=/data/mongoData/
logpath=/data/mongoLogs/mongo.log
port=27017
重启启动我们的MongoDB $ ./bin/mongod -f /conf/mongodb.conf & 即可(记得把目录提前创建好,不然启动报错的)
常见参数详解
dbpath 数据库目录,默认/data/db
bind_ip 监听IP地址,默认全部可以访问
port 监听的端口,默认27017
logpath 日志路径
logappend 是否追加日志
auth 是开启用户密码登陆
fork 是否已后台启动的方式登陆
config 指定配置文件
注意:在下载安装包成功以后,启动时可能会出现,-bash: ./bin/mongod: cannot execute binary file错误信息。这个是版本不对应问题,可能是64位系统下载了32位的安装包,或者你32位的系统安装了64位的安装包,我们输入$ getconf LONG_BIT即可查看我们的版本号。下载对应正确的版本。
二、简单使用(基础和插入)
1.查看所有库,show databases;或者show dbs;
2.选择库,use 库名;如果没有该库,则创建该库,输入db;查看所在数据库。
3.查看该库下的所有表,show tables。或者show collections;
4.创建与插入,我们输入 $ db.表名.insert({"属性":"值"}),如果没有则创建该表,存在则添加数据。例如db.student.insert({name:"张三",age:12})。
五种数据类型展示db.student.insert({name:"小菜技术",age:18,souce:99.9,sex:true,createDate:Date()})。字符串,整型,浮点型,布尔型,时间类型
5.查看表 db.表名.find();例如我们$ db.student.find(); 简单条件查询db.student.find({age:18})即可
6.表删除,db.表名.drop(),例如 db.classInfo.drop()。db.dropDatabase()是删除当前数据库。
7.多条插入,db.表名.insertMany([data1,data2])例如db.stu.insertMany([{name:"赵武"},{age:11}]);用insert后面加一个数组也是可以的。
这里再说一下我们的插入,我们会看到每次我们并没有指定我们的id,每次MongoDB会帮我自动生成一个id,这时我们的数据可以重复插入的,我们只需要每次指定id,就不会造成数据的重复了,例如db.stu.insert({_id:001,name:"xxxx"})
二、简单使用(基础查询)
1.where name="王武" and age=12,这个到我们的MongoDB里就是这样的db.stu.find({name:'王武',age:12})即可。
2.范围查询>,<,>=,<=,分别对应的是$gt,$lt,$gte,$lte,例如db.stu.find({age:{$gte:12}}),就是要查询年龄字段大于等于12的值。
3.where age in (12,99,100),这个到我们的MongoDB里就是这样的db.stu.find({age:{$in:[12,99,100]}})即可。注意$all是并且的意思,现在我觉得没啥用,用法和in一样的,意思是既等于这个也等于那个。
4.where name="王武" or age=12,到我们的MongoDB里就是这样的db.stu.find({$or:[{name:"王武"},{age:11}]}),注意括号。我们sql的and也可以写成db.stu.find({$and:[{name:"王武"},{age:99}]})这样的。
5.where name='赵武' or (name="王武" and age=12),就写成db.stu.find({$or:[{name:"赵武"},{$and:[{name:"王武"},{age:12}]}]})。自己缕缕顺序就好了,也不难。
6.排序,db.stu.find().sort({age:-1}),意思就是按照查找所有,然后按照年龄降序排列,1升序,-1降序。多个排序字段,逗号分隔,例如db.stu.find().sort({age:-1})
7.分页,db.stu.find().skip(3*0).limit(3),意思是每页三条记录,我们要查看第一页的数据,skip(分页单位*(当前页-1))。limit(分页单位)。
最进弄了一个公众号,小菜技术,欢迎大家的加入
java架构之路-(NoSql专题)MongoDB快速上手的更多相关文章
- [转帖]java架构之路-(面试篇)JVM虚拟机面试大全
java架构之路-(面试篇)JVM虚拟机面试大全 https://www.cnblogs.com/cxiaocai/p/11634918.html 下文连接比较多啊,都是我过整理的博客,很多答案都 ...
- MongoDB快速上手
1. MongoDB简介 MongoDB是一个跨平台的基于Key_Value键值对形式保存数据的NoSQL文档类型数据库. NoSQL(not only sql)数据库,泛指非关系型数据库. 1.1 ...
- java架构之路-(微服务专题)初步认识微服务与nacos初步搭建
历史演变: 以前我们都是一个war包,包含了很多很多的代码,反正我开始工作的时候做的就是这样的项目,一个金融系统,代码具体多少行记不清楚了,内部功能超多,但是实际能用到的不多,代码冗余超大,每次部署大 ...
- java架构之路-(Redis专题)Redis的主从、哨兵和集群
我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...
- java架构之路-(Redis专题)SpringBoot连接Redis超简单
上次我们搭建了Redis的主从架构,哨兵架构以及我们的集群架构,但是我们一直还未投入到实战中去,这次我们用jedis和springboot两种方式来操作一下我们的redis 主从架构 如何配置我上次已 ...
- java架构之路-(Redis专题)聊聊大厂那些redis
上几次说了redis的主从,哨兵,集群配置,但是内部的选举一直没说,先来简单说一下选举吧. 集群选举 redis cluster节点间采取gossip协议进行通信,也就是说,在每一个节点间,无论主节点 ...
- java架构之路-(Redis专题)redis面试助力满分+
1.Redis支持的数据类型? 答:五种,在第一节redis相关的博客我就说过,String,Hash,List,Set,zSet,也就是我们的字符串,哈希,列表,集合,有序集合五种.结构图如下. 2 ...
- java架构之路-(netty专题)netty的基本使用和netty聊天室
上次回顾: 上次博客,我们主要说了我们的IO模型,BIO同步阻塞,NIO同步非阻塞,AIO基于NIO二次封装的异步非阻塞,最重要的就是我们的NIO,脑海中应该有NIO的模型图. Netty概念: Ne ...
- java架构之路-(Redis专题)Redis的高性能和持久化
上次我们简单的说了一下我们的redis的安装和使用,这次我们来说说redis为什么那么快和持久化数据 在我们现有的redis中(5.0.*之前的版本),Redis都是单线程的,那么单线程的Redis为 ...
随机推荐
- iOS性能优化-异步绘制
参考地址:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/ 很久以前就看过这篇文章,但是也只是看过就过了,没有去整 ...
- Inkscape 旋转并复制
画一个图形,点击图标. 然后图标中心有个十字叉, 然后把这个十字叉拖到你想要旋转的地方. 然后shift+ctrl+m打开变换菜单. 选择旋转选项卡,然后设置角度,点击应用.就可以旋转了,如果配合ct ...
- springboot项目目录结构
idea新建springboot项目 按默认下一步至完成,默认目录结构如下 pom.xml文件内容如下 <?xml version="1.0" encoding=" ...
- SpringBootSecurity学习(23)前后端分离版之OAuth2.0 其它模式
密码模式 前面介绍了授权码模式和刷新令牌两种获取最新令牌的方法,下面来看一下其它模式.首先看密码模式,我们默认配置的三种模式中其实就包含密码模式的支持: 因此我们启动项目,直接使用密码模式即可,访问地 ...
- prefer-object-spread
eslint报错: Use an object spread instead of `Object.assign` eg: `{ ...foo }`.(prefer-object-spread) 即: ...
- JavaScript Array返回值以及是否改变原数组。
1. push:最后一位新增://改变原数组 arr.push("123"); 返回值是数组的长度: var b = ...
- vue-class-component使用Mixins
vue-class-component提供了mixinshelper函数,以类样式的方式使用mixins.通过使用mixins帮助程序,TypeScript可以推断mixin类型并在组件类型上继承它们 ...
- 使用Wireshark成功解决JavaWeb项目的页面一直加载中的问题
现象 打开 服务器页面 10.2.155.100,然后发现页面JS显示 加载中..F12浏览器看起来像是发起css等静态资源时卡死.一时定位还以为时 前端的问题. 解决过程 上服务器抓包: tcpdu ...
- APP打包设置程序版本号
正确设置方式是: 注意,以下修改不会起作用<manifestxmlns:android="http://schemas.android.com/apk/res/android" ...
- 源码学习系列之SpringBoot自动配置(篇一)
源码学习系列之SpringBoot自动配置源码学习(篇一) ok,本博客尝试跟一下Springboot的自动配置源码,做一下笔记记录,自动配置是Springboot的一个很关键的特性,也容易被忽略的属 ...