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一样的,意思是既等于这个也等于那个。注意一下自己删下空格啊,浏览器被这个玩意xxs注入了 $

  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(分页单位)。

最进弄了一个公众号,小菜技术,欢迎大家的加入

posted @ 2019-11-11 16:31  小菜技术  阅读(394)  评论(0编辑  收藏  举报