Python与mongodb的交互

1.什么是mongodb?

MongoDB是一个基于分布式文件存储的数据库,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2.Robo3T的介绍

robo 3t 是一款MongoDB的辅助插件,它是Robomongo的升级版本,在新版中,我们可以更加方便的查找数据库对象、利用其中的数据生成器,也可以将Excel文件的数据导入数据库中保存,对于制作数据文件来说是非常方便的

3.mongodb和Robo3T的下载官网

mongodb下载官网:https://www.mongodb.com/download-center
Robo3T下载官网:https://robomongo.org/download

4.安装pymongo模块

在这里插入图片描述

5.python与mongodb数据库的连接

import pymongo

client=pymongo.MongoClient()
person=client.person
student=person.student
print('连接数据库成功!')
print(student.find())

连接数据库成功!
<pymongo.cursor.Cursor object at 0x0000021962328A58>

6.python操作mongodb数据库

说明:这些数据是在Robo3T中插入好的,我们要做的就是在python中操作数据(包括查询,更新,删除等)

(1)查询mongodb中的所有数据

result=student.find()

for i in result:
    print(i)

{’_id’: ObjectId(‘5ebe408183e18596ee6671e7’), ‘name’: ‘曹操’, ‘age’: ‘28’, ‘country’: ‘蜀国’}
{’_id’: ObjectId(‘5ebe40e383e18596ee6671e8’), ‘name’: ‘张飞’, ‘age’: ‘24’, ‘country’: ‘蜀国’}
{’_id’: ObjectId(‘5ebe411883e18596ee6671e9’), ‘name’: ‘张飞’, ‘age’: ‘24’, ‘country’: ‘蜀国’}
{’_id’: ObjectId(‘5ebe411883e18596ee6671ea’), ‘name’: ‘关羽’, ‘age’: ‘26’, ‘country’: ‘蜀国’}
{’_id’: ObjectId(‘5ebe485983e18596ee6671eb’), ‘name’: ‘刘备’, ‘age’: ‘30’, ‘country’: ‘蜀国’}
{’_id’: ObjectId(‘5ebe513300ac2d73a7cbea3b’), ‘name’: ‘张三’, ‘age’: ‘40’, ‘country’: ‘魏国’}

(2)将数据按年龄升序和降序排列

#升序
result=student.find().sort("age",1)

for i in result:
    print(i)
#降序
result=student.find().sort("age",-1)

for i in result:
    print(i)

{’_id’: ObjectId(‘5ebe513300ac2d73a7cbea3b’), ‘name’: ‘张三’, ‘age’: ‘40’, ‘country’: ‘魏国’}
{’_id’: ObjectId(‘5ebe485983e18596ee6671eb’), ‘name’: ‘刘备’, ‘age’: ‘30’, ‘country’: ‘蜀国’}
{’_id’: ObjectId(‘5ebe408183e18596ee6671e7’), ‘name’: ‘曹操’, ‘age’: ‘28’, ‘country’: ‘蜀国’}
{’_id’: ObjectId(‘5ebe411883e18596ee6671ea’), ‘name’: ‘关羽’, ‘age’: ‘26’, ‘country’: ‘蜀国’}
{’_id’: ObjectId(‘5ebe40e383e18596ee6671e8’), ‘name’: ‘张飞’, ‘age’: ‘24’, ‘country’: ‘蜀国’}
{’_id’: ObjectId(‘5ebe411883e18596ee6671e9’), ‘name’: ‘张飞’, ‘age’: ‘24’, ‘country’: ‘蜀国’}

(3)增加数据

student.insert({"name":"王二","age":"35","country":"吴国"})
result=student.find()

for i in result:
    print(i)

(4)删除数据

student.remove({"name":"张飞"})
result=student.find()

for i in result:
    print(i)

(5)查找数据个数

result=student.find().count()
print(result)

(6)更新数据

data={"name":"王二"}
result=student.find_one(data)
result["country"]="齐国"
student.update(data,{"$set":result})
print(result)

{’_id’: ObjectId(‘5ebe5b16bdf4d2ae595a8e49’), ‘name’: ‘王二’, ‘age’: ‘35’, ‘country’: ‘齐国’}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值