Python---MongoDB数据库基本操作

Shell操作Mongo数据库

一、基础操作

数据库操作描述
db.version()查看当前数据库的版本号
db查看当前所在数据库
db.getMongo()查看当前数据库链接的地址
show databases/show dbs查看所有数据库
use 数据库名切换数据库
show collections/show tables查看集合

注:

  1. 查看所有数据库时,若数据库没有任何数据,则不会显示
  2. 切换数据库时,如果没有数据库则会创建数据库—数据库的隐式创建

二、增

1、创建集合

语法:db.createCollection(集合名)

2、插入文档

语法:

  1. db.集合名.insert({‘key’:‘value’})
  2. db.集合名.save({‘key’:‘value’})

注:

  1. 如果想要插入多条数据,可以将多个对象放到一个数组中
  2. 如果插入数据的集合不存在,会先创建再插入—集合的隐式创建

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,是否显示此字段])

语法:

  1. db.集合名.find(query)
  2. db.集合名.find(query,{k:1(显示)/0(不显示)})
  3. db.集合名.findOne([query,是否显示此字段])

注:

  1. find()方法查询时,查询出来的数据是一行显示的,可以使用pretty()将数据格式化输出

  2. 语法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

一、连接数据库

步骤:

  1. 导入pymongo
    import pymongo
  2. 创建连接
    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({})
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值