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快速上手的更多相关文章

  1. [转帖]java架构之路-(面试篇)JVM虚拟机面试大全

    java架构之路-(面试篇)JVM虚拟机面试大全 https://www.cnblogs.com/cxiaocai/p/11634918.html   下文连接比较多啊,都是我过整理的博客,很多答案都 ...

  2. MongoDB快速上手

    1.  MongoDB简介 MongoDB是一个跨平台的基于Key_Value键值对形式保存数据的NoSQL文档类型数据库. NoSQL(not only sql)数据库,泛指非关系型数据库. 1.1 ...

  3. java架构之路-(微服务专题)初步认识微服务与nacos初步搭建

    历史演变: 以前我们都是一个war包,包含了很多很多的代码,反正我开始工作的时候做的就是这样的项目,一个金融系统,代码具体多少行记不清楚了,内部功能超多,但是实际能用到的不多,代码冗余超大,每次部署大 ...

  4. java架构之路-(Redis专题)Redis的主从、哨兵和集群

    我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...

  5. java架构之路-(Redis专题)SpringBoot连接Redis超简单

    上次我们搭建了Redis的主从架构,哨兵架构以及我们的集群架构,但是我们一直还未投入到实战中去,这次我们用jedis和springboot两种方式来操作一下我们的redis 主从架构 如何配置我上次已 ...

  6. java架构之路-(Redis专题)聊聊大厂那些redis

    上几次说了redis的主从,哨兵,集群配置,但是内部的选举一直没说,先来简单说一下选举吧. 集群选举 redis cluster节点间采取gossip协议进行通信,也就是说,在每一个节点间,无论主节点 ...

  7. java架构之路-(Redis专题)redis面试助力满分+

    1.Redis支持的数据类型? 答:五种,在第一节redis相关的博客我就说过,String,Hash,List,Set,zSet,也就是我们的字符串,哈希,列表,集合,有序集合五种.结构图如下. 2 ...

  8. java架构之路-(netty专题)netty的基本使用和netty聊天室

    上次回顾: 上次博客,我们主要说了我们的IO模型,BIO同步阻塞,NIO同步非阻塞,AIO基于NIO二次封装的异步非阻塞,最重要的就是我们的NIO,脑海中应该有NIO的模型图. Netty概念: Ne ...

  9. java架构之路-(Redis专题)Redis的高性能和持久化

    上次我们简单的说了一下我们的redis的安装和使用,这次我们来说说redis为什么那么快和持久化数据 在我们现有的redis中(5.0.*之前的版本),Redis都是单线程的,那么单线程的Redis为 ...

随机推荐

  1. 利用Dockerfile部署SpringBoot项目

    利用Dockerfile部署SpringBoot项目 1.创建一个SpringBooot项目并且打成jar包 2.在Linux中创建一个文件夹,来做docker测试 [root@izwz90lvzs7 ...

  2. Android中三种常用解析XML的方式(DOM、SAX、PULL)简介及区别

    XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能.今天就由我向大家介绍一下在Android平台下几种常见的XML解 ...

  3. Java工程师学习指南(完结篇)

    Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...

  4. 基于vue组件,发布npm包

    亲测好用,如出错,请留言 1.项目初始化 使用vue脚手架创建,但vuecli太重,我们使用简单的工程脚手架进行处理,输入命令 vue init webpack-simple my-project n ...

  5. 内网渗透bypassuac和smb溢出

    对内网渗透需要渗透的目标主机处于跨网段和uac限制的情况做一个渗透记录 环境大致如下 拥有shell权限的win7(有uac限制,处于双网段) 和同win7同一网段下暂时无权限的靶机xp 先对有权限的 ...

  6. Snagit卸载不彻底的问题

    Snagit是一款优秀的截图录屏软件,尤其是他的编辑器.方便的复制粘贴功能比较好用. 但是,卸载不完全绝对是一件烦人的事情. 可能的解决方案: 1.sfc /scannow >> CBS. ...

  7. python编程系列---global的使用注意点

    global用法虽然很简单,当在函数中要修改全局变量时要使用到,但也要注意一个小问题,看下面的代码: 调用append()方法,只是修改,并不是赋值操作,不需要global提前声明 temp_num ...

  8. C++bosst遍历文件目录,根据文件名返回文件路径。

    VS2071安装Boost库 安装boost库 接着安装boost_system-vc140(可根据开发需求,更改版本) 废话不多说,上代码 // 测试程序.cpp : 此文件包含 "mai ...

  9. Spring Boot入门(二):获取配置文件值

    本篇博客主要讲解下在Spring Boot中如何获取配置文件的值. 1. 使用yaml配置文件 Spring Boot默认生成的配置文件为application.properties,不过它也支持ya ...

  10. 在非洲运营互联网系统-PAYGo方案

    ​ 尼日利亚当地经济.支付.网络.供电.交通等基建都比较落后,虽然各方面都在缓慢增长,但当地人对高额的刚需产品仍望而却步. 其他非洲国家也有同样的问题. 同理国内,一些低收入人群都想买房,但房价动辄几 ...