基本命令
1.连接mongodb
mongo 远程主机ip或DNS:MongoDB端口号/数据库名 -u user -p password e.g.: mongo 192.168.1.200:27017/test -u user -p password 若在安装mongo的服务器上访问本地mongo,可直接执行 mongo
2.shell基本操作命令
show dbs:显示数据库列表 show collections:显示当前数据库中的集合(类似关系数据库中的表) show users:显示用户 use <db name>:切换当前数据库,这和MS-SQL里面的意思一样 db.help():显示数据库操作命令,里面有很多的命令 db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合(表),并非真正意义上的命令 db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1 db.foo.find({a:1},{column:0}) :后面的大括号代表返回字段过滤,column为列名,0代表只去掉该字段,1代表只保留该字段
3.增
db.foo.insert({ "userId" : "testcustomer"})
4.删
--删除指定条件的数据 db.foo.remove({"userId" : "testcustomer"}) --清空表 db.foo.remove({}) --删除表 db.foo.drop() --删除数据库 db.dropDatabase() --注意,删除操作是永久性的,不可恢复的,所以删除前应该使用find确认删除数据 --另,mongodb删除集合后磁盘空间不释放,用db.repairDatabase()去修复才能释放。但是在修复的过程中如果出现了非正常的mongodb的挂掉,再次启动时启动不了的,需要先修复才可以,可以利用./mongod --repair --dbpath=/data/mongo/,如果你是把数据库单独的放在一个文件夹中指定dbpath时就指向要修复的数据库就可以,修复可能要花费很长的时间,在使用db.repairDatabase()去修复时一定要停掉读写,并且mongodb要有备机才可以,不然千万不要随便使用db.repairDatabase()来修复数据库,切记。 回收磁盘空间可以参考:http://blog.csdn.net/mchdba/article/details/8894344
5.改
db.foo.update({"userId" : "ordinary"},{'$set':{"usermail" : "2012@qq.cn"}})
6.查
–此处主要记录特殊查询,mongodb语句和mysql sqlserver不同
大于,小于,大于等于,小于等于
$gt 大于 > $lt 小于 < $gte 大于等于 >= $lte 小于等于 <= e.g. db.collection.find({age:{$gt:18}}); //年龄大于不包含18岁 SQL:SELECT * FROM Collection WHERE age>18
不等于
$ne 不等于 noe equals e.g. db.collection.find({age:{$ne:18}}) ;//年龄不等于18
in , not in
--in,not in $in,$nin e.g. db.collection.find({field:{$in:array}}); db.collection.find({field:{$nin:array}});
是否存在
$exists e.g. db.collection.find({title:{$exists:true}}); //如果记录中有包含title属性的全部返回 db.collection.find({title:{$exists:false}}); //如果记录中有包含title属性的全部不返回,不包含title属性的全部返回
正则表达式
db.collection.find( { name : /acme.*corp/i } ); // 后面的i的意思是区分大小写 • 1
非查询
$not e.g. db.collection.find( { name : { $not : /acme.*corp/i } } );
匹配内数组内的元素
$elemMatch e.g. 如果对象有一个元素是数组,那么$elemMatch可以匹配内数组内的元素 > t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } ) { "_id" : ObjectId("4b57833003340000999"),"x":[{"a":1,"b":3},7,{"b":99}, {"a":11}]} $elemMatch : { a : 1, b : { $gt : 1 } } 所有的条件都要匹配上才行。 区别于 t.find( { "x.a" : 1, "x.b" : { $gt : 1 } } ) $elemMatch是匹配{ "a" : 1, "b" : 3 },而后面一句是匹配{ "b" : 99 }, { "a" : 11 }
springBoot项目Mongodb中GridFS实现文件上传和下载
参考课程:
千峰 https://www.bilibili.com/video/BV1xz4y1X7cE?p=30&t=594
黑马 https://www.bilibili.com/video/BV1bJ411x7mq?p=7&t=88