Mongo连接与查询

最近一个项目中又接触到了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;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值