当前位置: 首页 > news >正文

python和mongodb交互

前言

MongoDB是常用的非关系型数据库,在开发中经常用到。本文介绍MongoDB和Python结合使用的用法。

在Python代码中使用MongoDB数据库,首先需要安装第三方库:

pip install pymongo

示例代码:

# 导包
import pymongo# 创建连接
mongo_client = pymongo.MongoClient(host='localhost', port=27017)# 连接数据库和集合  database1是数据库名称 t2是集合名称
db = mongo_client['database1']['t2']# 查询
results = db.find()# 遍历查询结果
for item in results:print(item)
语法操作格式
$eq等于{:}
$lt小于{: {$lt:}}
$lt小于或等于{: {$lte:}}
$lt大于{: {$gt:}}
$lt大于或等于{: {$gte:}}
$lt不等于{: {$ne:}}
$lt{$and: [{}, {}]}
$lt{$or: [{}, {}]}
$lt在范围内{age: {$in: [val1, val2]}}
$lt不在范围内{age: {$nin: [val1, val2]}}

基本查询

查询集合中的第一条记录:

db.find_one()

查询所有数据:

db.find()

查询结果只显示某些字段,0表示不显示,1表示显示:

默认情况下 _id 字段是显示的,其他字段是不显示的。

db.find({}, {"_id": 0, "name": 1, "age": 1})

条件查询:

# 查询age字段值是28的数据
res = db.find({'age': 28})# 查询age字段值大于28的数据
res = db.find({'age': {'$gt': 28}})# 查询age字段值大于28的数据,并按照年龄从小到大排序,1是从小到大,-1是从大到小
res = db.find({'age': {'$gt': 28}}).sort({'age': 1})# 查询age字段值大于28,并且city字段的值是深圳的数据(同时满足2个条件)
res = db.find({'$and': [{'age': {'$gt': 28}},{'city': '深圳'}
]})# 查询age字段值大于30,或者city字段的值是深圳的数据(满足任意一个条件即可)
res = db.find({'$or': [{'age': {'$gt': 30}},{'city': '深圳'}
]})# 查询occupation字段值包含经理的数据(正则表达式-模糊查询)
res = db.find({'occupation': {'$regex': '经理'}})

聚合查询

以性别分组:

db.aggregate([{"$group": {"_id": "$gender"}}  # 以性别分组
])'''
{'_id': '女'}
{'_id': '男'}
'''

以性别分组,分组后年龄求和:

db.aggregate([{"$group": {"_id": "$gender", "sum_age": {"$sum": "$age"}}}  # 以性别分组,分组后年龄求和
])'''
{'_id': '男', 'sum_age': 294.0}
{'_id': '女', 'sum_age': 271.0}
'''

以性别分组,分组后求个数(出现的次数):

db.aggregate([{"$group": {"_id": "$gender", "count": {"$sum": 1}}}
])"""
{'_id': '女', 'count': 10}
{'_id': '男', 'count': 10}
"""

以性别分组,分组后年龄求平均值:

db.aggregate([{"$group": {"_id": "$gender", "avg_age": {"$avg": "$age"}}}
])'''
{'_id': '女', 'avg_age': 27.1}
{'_id': '男', 'avg_age': 29.4}
'''

以性别分组,分组后把年龄放到一起:

results = self.db.aggregate([{"$group": {"_id": "$gender","age": {"$push": "$age"}}}
])'''
{'_id': '男', 'age': [28.0, 32.0, 35.0, 27.0, 26.0, 24.0, 28.0, 34.0, 29.0, 31.0]}
{'_id': '女', 'age': [25.0, 29.0, 22.0, 31.0, 33.0, 30.0, 26.0, 23.0, 27.0, 25.0]}
'''
名称描述
$avg求平均值
$min求最小值
$max求最大值
$sum求和
$push放到一起
$count计数
http://www.dtcms.com/a/594048.html

相关文章:

  • 网站建设就业前景学校网站建设栏目设置
  • 文心一言5.0 Preview模型能力观察:基于LMArena排名的文本任务实测
  • 2-物理层
  • 数据入仓和数据ETL(七)
  • 怎么做网站评估遵义网站
  • Makefile常见错误与快速修复指南
  • 嵌入式Linux学习——文件目录
  • 中科院网站建设WordPress做头部的插件
  • python做网站有什么弊端台州seo网站排名优化
  • PostgreSQL基操
  • 光纤传输20公里的音频、USB光纤传输一体机深度解析
  • DIC多相机协同方案在复杂结构360°全景形貌与变形场检测中的应用研究
  • 发布建设网站一个优秀的个人网站
  • 做网站是干什么用的广州竞价托管公司
  • 梧州网站建设服务商电子商务网站建设
  • 做婚恋网站挣钱吗工商营业执照官网
  • 【ESP32接入最新国产豆包大模型教程】
  • 股指期货和融资融券:对冲交易的两大工具详解
  • 【javaEE】多线程--认识线程、多线程
  • 网站做淘宝客排名会掉吗重庆新闻频道直播在线观看
  • 专业建站流程佛山百度网站快速排名
  • 万能视频解析接口网站怎么做有没有专门做根雕的网站
  • 做网站定金一般多少个人网站seo
  • 青岛营销型网站设计公司开网站做外贸
  • 中国购物网站大全排名Wordpress右侧返回顶部按钮
  • 花都网站建设公司公众号平台网页版登录入口
  • 基于动态规划的潜能觉醒数学模型
  • 中文网站建设和英文网站建设的区别微信公众平台绑定网站
  • 百度站长网站文件验证公司基本介绍模版
  • iis 网站打不开如何做好一个外贸进网站的编辑