mongodb的基本操作
在cmd中输入mongo进入数据库。输入show databases 可以查询已有的数据库,admin 和 local 都是自带的数据库,不
要去操作这两个数据库。下面介绍MongoDB的基本操作:增删查改!
在对数据处理之前,我们先要建库建集合:
建库:使用命令:use + 库名 如:use dan ;如果库名存在则进入该库,不存在就创建!如果没有添加数据,会发生回滚
现象,使用show dbs 查看数据库,会显示没有这个库!
查询集合:
show collections 可以查询当前库的所有集合;使用 show tables 可以查看当前库的所有集合。
增加数据:db.test.insert({'name':'nike','sex':'man'}) 默认添加 id 。注意到这里的数据传入是以字典的格式!test为集
合名,使用show tables 可以查看当前库的所有集合。
db.test.save({'name':'dc&cn','sex':'*'}) save方法同样可以插入数据,如果指定已有的id还可以修改数据。
为了方便下面的阐述,我们多添加几条数据!
查询数据:db.test.find() 查询test集合中的数据,默认显示20条。
db.test.find({'age':{$eq:'25'}}) 查询test集合中age等于'25'的数据。如果插入数据的时候是数字是以字符
串传入的,则这里必须使用引号,不然匹配不到!
这里的最后一条数据,25是以数值直接插入,查询的时候就查不到,所以数据的格式一定要注意!
db.test.find({'age':{$eq:'25'},'sex':'man'}) 查询test集合中age等于'25' 和性别为男的数据。这里也展示了
多条件过滤。
删除数据:db.test.drop({'age':'25'})
db.test.remove({'age':'25'}) 删除test集合中age字段值为 '25' 的
db.test.remove({'name':'nike','age':'15'}) 多条件匹配删除,注意remove匹配到几条数据就会删除几条。
db.test.remove({}) 删除当前文档,但是集合还在,是一个空集合
db.test.drop() 删除集合
更新数据:db.test.update({'name':'dc&cn'},{$set:{'age':23}})
此处找到name为dc&cn的数据将age改为23,没有该字段就是添加。每次都是修改匹配到的第一个。multi参数设置为True,会
更新所有的数据。如:db.test.update({'name':'lining'},{$set:{'age':2000}},{'multi':3}) 这里的3默认为true,
符合要求的数据将全部更新。
MongoDB的操作符
比较操作符
$ eq 等于 $ gt 大于 $ gte 不小于 $ lt 小于
$ lte 不大于 $ ne 不等于 $ in 接一个数组,表示在数组元素中匹配
逻辑操作符
or and not nor
db.test.find({$or:[{'age':25},{'sex':'man'}]}) 匹配age为25或者sex为man的数据。$or后边也是接一个数组。
db.test.find({$and:[{'age':25},{'sex':'man'}]}) 匹配两个条件同时满足的数据,等价于:
db.test.find({'age':'25','sex':'man'})
db.test.find({'age':{ $not:{$eq:'25'}}}) 匹配age不等于25的。$not操作符只会影响其他操作符不能独立检查字段
和文档。这里使用not看似和比较操作符没有什么区别,但是将$eq换成$gt时就有明显的区别了。如下图所示:
db.test.find({$nor:[{'age':'25'}]}) 如果数组里面的元素使用比较操作符,会匹配失败
更新操作符:
$inc 加减
$mul 乘法
$rename 重命名
$set 更新某一个字段,其他保留