文章目录
- Shell操作Mongo数据库
- 一、基础操作
- 二、增
- 1、创建集合
- 2、插入文档
- 3、拷贝数据,将数据库的数据拷贝到另一个数据库
- 三、删
- 1、删除当前所在的数据库
- 2、删除集合
- 3、删除文档
- 四、改
- 1、更新数据/修改数据
- 五、查
- 1、查询所有数据
- 2、查询当前数据库的状态
- 3、查询文档 find([query,是否显示此字段])
- 4、查询某一列去重后的数据
- 5、AND条件的使用
- 6、OR条件的使用
- 7、限制查询
- 8、skip()
- 9、分页
- 10、模糊查询
- 11、排序查询
- 12、统计
- 六、游标
- 1. 什么是游标?
- 2. 游标的使用
- 3 游标的声明周期
- Pycharm操作mongo数据库
- 一、连接数据库
- 二、常用方法
Shell操作Mongo数据库
一、基础操作
数据库操作 | 描述 |
db.version() | 查看当前数据库的版本号 |
db | 查看当前所在数据库 |
db.getMongo() | 查看当前数据库链接的地址 |
show databases/show dbs | 查看所有数据库 |
use 数据库名 | 切换数据库 |
show collections/show tables | 查看集合 |
注:
- 查看所有数据库时,若数据库没有任何数据,则不会显示
- 切换数据库时,如果没有数据库则会创建数据库—数据库的隐式创建
二、增
1、创建集合
语法:db.createCollection(集合名)
2、插入文档
语法:
- db.集合名.insert({‘key’:‘value’})
- db.集合名.save({‘key’:‘value’})
注:
- 如果想要插入多条数据,可以将多个对象放到一个数组中
- 如果插入数据的集合不存在,会先创建再插入—集合的隐式创建
3、拷贝数据,将数据库的数据拷贝到另一个数据库
语法:db.copyDatabase(‘数据库1’,‘数据库2’,‘ip地址’)
三、删
1、删除当前所在的数据库
语法:db.dropDatabase()
2、删除集合
语法:db.集合名.drop()
3、删除文档
语法:remove(query, [ justOne ])
- 删除全部文档:db.集合名.remove({})
- 根据条件删除:db.集合名.remove(query)—删除全部符合条件的数据
- query:必选参数,
- justOne:可选参数,是布尔值,代表是否只删除一条数据?默认false
四、改
1、更新数据/修改数据
语法:db.集合名.update(query,update,[upsert,multi])
- query:必选参数,条件
条件 | 描述 |
$lt | 小于 |
$gt | 大于 |
$eq | 等于 |
$ne | 不等于 |
$gte | 大于等于 |
$lte | 小于等于 |
- update:必选参数,更新后的数据,默认修改整列,需要加[$set]
条件 | 描述 |
$set | 设置值 |
$inc | 增长值 |
$rename | 重命名 |
$unset | 删除 |
- upsert:可选参数,是布尔值。作用:如果不存在update记录,是否插入更新的数据?true插入, false不插入,默认是false
- multi:可选参数,是布尔值。作用:是否将查询出来的所有符合条件的数据全部更新?ture全部更新,false更新一条,默认是false
五、查
1、查询所有数据
语法:db.集合名.find()
2、查询当前数据库的状态
语法:db.stats()
3、查询文档 find([query,是否显示此字段])
语法:
- db.集合名.find(query)
- db.集合名.find(query,{k:1(显示)/0(不显示)})
- db.集合名.findOne([query,是否显示此字段])
注:
- find()方法查询时,查询出来的数据是一行显示的,可以使用pretty()将数据格式化输出
- 语法3只查询一条数据,返回的数据格式是格式化之后的形式,所以,此方法不能使用pretty()
4、查询某一列去重后的数据
语法:db.集合名.distinct(k)
5、AND条件的使用
语法:db.集合名.find({‘k1’:‘v1’,‘k2’:‘v2’…})
注:多个条件使用逗号分隔
6、OR条件的使用
关键字:$or
语法:db.集合名.find({$or:[{‘k1’:‘v1’},{‘k2’:‘v2’},…])
7、限制查询
语法:db.集合名.find().limit(n)
8、skip()
语法:db.集合名.find().skip(n)
跳过前n条数据,从第n+1条开始查询
9、分页
语法:db.集合名.find().skip(n).limit(m)
跳过前n条数据,从第n+1条开始查询,查询m条
10、模糊查询
语法:db.集合名.find(‘k’:/xxxx/)
11、排序查询
语法:db.集合名.find().sort({k:1/-1})
1代表正序(从小到大)-1代表倒序
12、统计
db.集合名.find().count()
六、游标
1. 什么是游标?
MongoDB中的游标和MySQL中的游标非常相似,可以通过对游标的一系列的设置来控制游标查询数据,游标并不是查询的结果,而是查询的一个返回资源或者接口,通过这个接口可以逐条读取数据,和PYTHON中的生成器类似,游标会消耗内存资源,所以在游标使用之后,应该尽快释放掉
在MongoDB中,如果游标被定义之后,没有使用变量接收,那么就是一个查询结果,默认自动迭代20次,可以使用【DBQuery.shellBatchSize=n】n是一个数字,即依次显示的数据量
2. 游标的使用
声明游标:var cursor=db.集合名.find()
移动游标:next(),可以取出数据
print():返回一个【Object Bson】,是Json的二进制类型
hasNext():查看游标是否能够继续移动,返回布尔值,ture/false
while(cursor.hasNext()){
printjson(cursor.next())
}
forEash():迭代方法。cursor.forEash(函数)
var getContent=function(obj){
printjson(obj.content)
}
cursor.forEach(getContent)
3 游标的声明周期
游标迭代到最后一条数据时,自动关闭
Pycharm操作mongo数据库
安装pymongo
pip install pymongo
一、连接数据库
步骤:
- 导入pymongo
import pymongo - 创建连接
client = pymongo.MongoClient(host=‘127.0.0.1’,port=27017)
二、常用方法
(1)查询所有数据库
- 旧:database_names()
- 新:list_database_names()
(2)查询所有集合
- 步骤:
1 先进入数据库
2 再查询集合 - 方法:
第一种:
db = client[‘class’]
db.collection_names()
第二种:
db = client.class
db.list_collection_names()
(3)插入数据
- 步骤:先进入集合,再插入数据
- 方法:col = db[‘students’]---->col.insert({‘name’:‘xiaohong’,‘age’:20,‘height’:160})
- 插入多条数据:col.insert([{},{}])
(4)查询数据:find()
- 查所有:
for i in col.find():print(i)
- 查一条:findOne()
- 条件查询
- 限制查询:limit(n)
- 跳过查询:skip()
(5)修改数据:
- 修改一条:update_one()
- 修改多条:update_many()
update({query},{update}[,upsert,multi])和mongo shell的使用一模一样
(6)删除数据:
- 删除所有符合条件的数据:delete_many()
col.delete_many({'age':10})
- 删除一条符合条件的数据:delete_one()
col.delete_one({'height':{'$lte':160}})
- 清空数据:delete_many({})
col.delete_many({})