最近一个项目中又接触到了mongo数据库,在本次测试过程中,需要自己查据,造数据,又重新整理了一遍用到的命令,以下是笔记整理
在mongodb里面用到的主要概念是文档,是一个分布式文档存储数据库
一些概念对应
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
(一)mongo连接进入
1.连接mongodb
$mongo
2.查看mongodb的版本
$db.version()
3.查看当前有哪些数据库(对应sql:show databases)
$show dbs
疑问:当前要是没有切入admin数据库,就无法查看,不清楚原因。。
4.切入admin数据库:(对应sql :use database)
$use admin(和mysql的切换数据库一样)
$db.auth("username","password")
$show dbs
5.查看集合(对应sql show tables)
$show collections(也用show 这里的collections也就是mysql的表概念差不多)
6.查看文档(对应sql: select)
$db.collections_name.find()----无筛选条件,一般情况下不要直接用,数据量太大
$db.collections_name.find({'key':'value'})-----有筛选条件
7.插入文档(对应sql: insert into)
db.collections.insertOne()------插入一个文档
db.collections.insertMany()------插入多个文档
db.collections.insert()------可以插入一个集合或多个文档
(二)mongo查询语句
(1)查询大于小于,一个区间
$gt 大于
$lte 小于
例:$db.collection.find({"time":{"$gt":153456789,"$lte":1534798932}}).limit(20)
解释:返回时间大于153456789,小于153479893的记录,限制20条
相当于sql:
$select * from collection where time >153456789 and time<1534798932 limit 20;
或:$select * from collection where time between 153456789 and 1534798932 limit 20;
(2)模糊匹配
简单的模糊匹配:/string /
高级的模糊匹配,需要用到正则,*,^之类的(需要好好学习正则匹配)
例:$db.collection.find({"address":/顺义区/}).limit(20)
解释:返回address中包含顺义区的记录,限制20条
相当于sql:
$ select * from collection where address like"%顺义区%" limit 20;
(3)统计条数
计数:count()
例:$db.collection.find().count()
解释:返回collection的记录条数
相当于sql:
$ select count(*) from collection;
(4)限制返回条数
limit(n);限制n条记录返回
例:$ db.collection.find().limit(5)
相当于sql:
$ select * from collection limit 5;
(5)修改数据
update()
例:
修改多条数据:$ db.location_201811.update({'moid':'京AFW272'},{$set:{'moid':'京ABB170'}},{multi:true})
解释:修改所有数据中车牌:“京AFW272”为“京ABB170”
修改单条数据:$ db.location_201811.update({'moid':'京AFW272'},{$set:{'moid':'京ABB170'}})
解释:修改一条数据中车牌:“京AFW272”为“京ABB170”
相当于sql:
$ update collection set moid="京ABB170" where moid="京AFW272";
(6)插入数据
$ db.collection.insert({"_id","01","plate":"陕A33333","address":"浙江省杭州市"})
$ db.colletion.save({"_id":"02","plate":"陕A33333","address":"浙江省杭州市"})
insert()和save()都表示插入数据,当insert插入同样的id时会出现异常,save会强制更新掉
(7)返回指定字段的数据
例:$ db.collection.find({"plate":"陕A11111"},{"plate:1,"address":1,"time":1}).limit(5)
解释:
前面:{"plate":"陕A11111"}:表示查询车牌为:陕A1111的数据
后面:{"plate:1,"address":1,"time":1},表示查询需要返回的字段
tip:
1.mongo规定除过id可以随意设定为0或者1,表示返回或不返回,其余字段不允许交叉设置为0和1的情况
2.即除了_id,你不能在一个对象中同事指定0和1,如果你设置了一个字段为0,则其他未设置的值默认为1,反之亦然
相当于sql:
$select plate,address,time from collection where plate='陕A11111' limit 5;
(8)数据排序
sort({"time":-1})或者sort({"time":1})
例:$db.collection.find({"plate":"陕A11111"},{"plate:1,"address":1,"time":1}).sort({"time":-1).limit(5)
解释:
接(7),按照时间倒叙排列,返回车牌为陕A1111,指定字段的5条记录,其中sort方法中,-1表示倒排,如果设置为1,即表示按照时间正序排序
相当于sql:
sort({"time":-1}):按照时间倒叙
$select plate,address,time from collection where plate='陕A11111' order by time desc limit 5;
sort({"time":-1}):按照时间正序
$select plate,address,time from collection where plate='陕A11111' order by time limit 5;