引言
这篇mongodb的笔记,其中包括mongodb的介绍、安装、Windows下的一些命令方法,以及和java整合的一案例demo有兴趣的可以学习交流一下。
mongodb简介
mongodb是一个非关系型数据库,存储量大是PB级别(1024T = 1PB),在建立所有的情况下查询速度较快,适用于现在的互联网项目开发。
首先附上mongodb的安装包下载地址其中包括windows和linux的两个安装包:https://pan.baidu.com/s/1aZpgDIXCAG-voMZY9uMMSw,
安装步骤
以Windows为例,直接解压Windows版本,在你的盘目录在创建一个叫mongo的文件夹,在这个文件夹里面建立一个叫db的文件夹,用来存放安装程序,在建立一个log的txt用来存放日志,
开始安装,找到cmd用管理员的身份启动,切换到你的mongodb的安装目录,即bin目录找到,mongod.exe(安装程序)
输入命令:mongod.exe --dbpath=d:/mongo/db/ --logpath=d:/mongo/log.txt --install出现 all output going ......表示安装成功,
此时去你的电脑的服务下面能找到一个mongodb的服务开启一下,然后回到的你cmd下面,在bin目录下面执行mongo.exe,此时出现你的mongodb的version的版本应该是2.0.3此时安装完成。
如果安装失败要重新安装,首先要把电脑服务下在mongodb服务关掉然后在去cmd中输入卸载命令:
mongod.exe --dbpath=d:/mongo/db/ --logpath=d:/mongo/log.txt --remove 在输入安装命令进行重新安装。
使用mongodb
1)创建一个数据库 命令use modelmongodb (mongodb不同于关系型数据库的是,他没有表结构,他采用是集合collection存储,存储的是bson的数据,(类json的数据))
2)插入数据三种数据格式
插入普通数据命令 ① db.goods.insert({name:'xiaomi',price:2000,number:'50'})
插入具有对象数据命令 ② db.goods.insert({name:'xiaomi',price:2000,number:'50',
area:{province:'jiangsu',city:'nanjing'}})
插入数组数据命令 ③
db.goods.insert({name:'xiaomi',price:2000,number:'50',
area:{province:'jiangsu',city:'nanjing'},color:['black','red','greed']})
(插入事注意语法,用({})包起来,int类型赋值不要加引号,字符串赋值要加引号,单引号和双引号都可以,推荐使用单引号,因为双引号在一些编辑器中转义会有一些问题)
3)查询数据
①查询所有数据 命令:db.goods.find()
①查询单挑数据数据 命令:db.goods.findOne() ---这个方法是返回你查询数据中多条的第一条
③条件查询命令
1)单条件查询 db.goods.find({nme:xiaomi})或者db.goods.findOne({nme:xiaomi}),
2)多条件查询 db.goods.find({nme:xiaomi,price:2000})或者db.goods.findOne({nme:xiaomi,price:200}),(条件可以传多个根据自己的实际需求)
3)条件查询的$gt--大于,$lt--小于,$gte--大于等于,$lte--小于等于
案例:查询价格大于2000的手机
上命令:db.goods.find({price:{'$gt',2000}}),其他命令根据需求模仿编写
4)$or或者条件的使用,满足一个条件即可
上命令:db.goods.find({'$or':[{name:xiaomi},{price:2000}]})
5)以上查询都是查询整体数据的全部字段,
①如果只想查询某些字段用1或0修饰,1:表示输出,0表示不输出
//这里我只想查出小米手机名称和价格 上命令:db.goods.find({name:1,price:1})
②或者不想查询某些字段
//只想看见手机的其他信息,但是不想看见手机的数量 上命令:db.goods.find({number:0})
注意:
①要么命令中保存要么输出,要么不输出,不允许出现,即输出某些值,又不输出某些值,会报错,
② 但是这里有一个特例:在查询的时候会自动给我添加一个_id字段,这个主键id,可以和其他输出字段一起使用,当对其他字段进行查询操作时,_id可以设置成1或0,这样不会有影响,不会报错。
4)修改数据 update
1) //如果使用了$set,那么修改的是将会是属性的值----这里是将name的xiaomi修改成xiaomimax
话不多说上命令:db.goods.update({name:xiaomi},{'$set':{nama:xiaomimax}})
2)//如果没有使用$set,那么在修改这个属性的时候,其他的属性和值将会被删除,_id除外
这里是将xiaomi修改成xiaomimax的同时将其他字段都删除了
话不多说上命令:db.goods.update({name:xiaomi},{nama:xiaomimax})
3)//如果修改的是字段存在则修改,不存在的话会添加新的字段
话不多说上命令:db.goods.update({name:xiaomimax},{nama:xiaomimin,size:5.5})
5 删除字段
1)删除整体数据
命令:db.goods.remove({name:xiaomi})
2 )删除某条数据的某个字段
命令:db.goods.remove({name:xiaomi},{'$unset':{name:1}})
或者db.goods.remove({name:xiaomi},{'$unset':{name:0}})
注意:这里的0和1没区别,有待考证,
其他命令
1)创建一个数据库 : use datename, 显示所有的数据库:show dbs,
删除一个数据库,要先切换到该数据库下 执行:db.dropDatebase()
2)创建一个集合: db.createCollection('monCollection',options) options是一些参数的配合,可以选择默认不加,具体有
db.createCollection("mycol", {
capped : true, autoIndexId : true, size :
6142800, max : 10000