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

143.《python中使用pymongo》

文章目录

  • pymongo安装
  • pymongo连接数据库
  • mongodb操作
    • 创建数据库
    • 判断数据库是否存在
    • 创建集合
    • 判断集合是否已经存在
    • 插入集合
      • 插入一条
      • 多条插入
    • 查询数据
      • 查询一条数据
      • 查询所有数据
      • 查询指定字段的数据
      • 统计查询
      • 统计所有记录数
      • 按条件统计记录数
      • 分页列表查询
      • 比较查询
        • $eq
        • $gt
        • $gte
        • $in
        • $lt
        • $lte
        • $ne
        • $nin
      • 正则表达式查询
      • 返回指定条数记录limit()
      • 指定从哪条数据开始skip()
      • 排序sort()
      • 复合排序
    • 更新数据
      • 修改一条数据
      • 修改多条数据
      • 列值增长的修改
    • 删除文档
      • 删除全部
      • 条件删除
    • 常用命令小结

mongodb 的安装教程,请移步 mac m1/2安装mongodb

pymongo安装

pip install pymongo

pymongo连接数据库

dababaseName为数据库名称
docment为文档名称

from pymongo import MongoClientclient = MongoClient('127.0.0.1', 27017)  # 如果是本地连接host,port参数可以省略db = client['dababaseName']['docment']

需要权限认证的方式链接mongodb

from pymongo import MongoClient#  创建数据库连接对象
client = MongoClient('127.0.0.1', 27017)#  选择一个数据库
db = client['admin']
#  数据库中开了权限认证后,需要下一行代码
#  输入超级管理员账号和密码
db.authenticate('username', 'password')
#  选择一个集合,没有的话会新建的
col = client['dababaseName']['docment']

mongodb操作

创建数据库

from pymongo import MongoClientclient = MongoClient('127.0.0.1', 27017)  # 如果是本地连接host,port参数可以省略db = client['test-mongo']

判断数据库是否存在

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
db_list = my_client.list_database_names()
if "test-mongo" in db_list:print('数据库已经存在!')

创建集合

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
document = my_client['test-mongo']
print(document)my_col = document['test_col']
print(my_col)

判断集合是否已经存在

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
document = my_client['test-mongo']col_list = document.list_collection_names()
print(col_list)
if 'test_col' in col_list:print("集合已经存在!")

插入集合

插入一条

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
# 插入
document.insert_one({"name": '章三'})
print(document.find())

多条插入

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document'] 
# 插入多条
data = [{ "name":'张三', "age": 18 },{ "name":'李四', "age": 20 }
]
result = database.insert_many(data)
print(list(document.find()))

查询数据

查询一条数据

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']result = document.find_one()
print(result)

查询所有数据

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']result = document.find()
print(result)

查询指定字段的数据

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']result = document.find({ "name": '章三' })
print(result)

from pymongo import MongoClientmy_client = MongoClient('mongodb://root:88888888@192.168.124.49:27017')
my_db = my_client['test-mongo']
# print(my_db)document = my_db['test-document']
# print(my_col)datas = document.find({}, {'name': 0})
for data in datas:print(data)

统计查询

统计所有记录数

from pymongo import MongoClientmy_client = MongoClient('mongodb://root:88888888@192.168.124.49:27017')
my_db = my_client['test-mongo']
# print(my_db)document = my_db['test-document']
result = document.count()

按条件统计记录数

from pymongo import MongoClientmy_client = MongoClient('mongodb://root:88888888@192.168.124.49:27017')
my_db = my_client['test-mongo']
# print(my_db)my_col = my_db['test-document']
result = document.count({userid: 1})

提示:默认情况下count() 方法返回符合条件的全部记录条数。

分页列表查询

比较查询

在这里插入图片描述

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] 
$eq
result = document.find({"age": {"$in": 18}},{"age": 1, "_id": 0})
$gt
result = document.find({"age": {"$gt": 18}},{"age": 1, "_id": 0})
$gte
result = document.find({"age": {"$gte": 18}},{"age": 1, "_id": 0})
$in
result = document.find({"age": {"$gte": [18,20]}},{"age": 1, "_id": 0})
$lt
result = document.find({"age": {"$lt": 20}},{"age": 1, "_id": 0})
$lte
result = document.find({"age": {"$lte": 20}},{"age": 1, "_id": 0})
$ne
result = document.find({"age": {"$ne": 20}},{"age": 1, "_id": 0})
$nin
result = document.find({"age": {"$nin": [18, 20]}},{"age": 1, "_id": 0})

正则表达式查询

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] 
result = document.find({"name": {"$regex": ".*?"})

返回指定条数记录limit()

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] 
result = document.find().limit(3)

指定从哪条数据开始skip()

my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] 
result = document.find().limit(3).skip(3)

排序sort()

1表示升序排序,-1表示降序排序

my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] 
# 排序
result = document.find().limit(3).skip(3).sort('age', -1)

复合排序

先按age字段进行升序排序,然后按name字段进行降序排序
这种排序方式会优先按第一个字段排序,如果第一个字段的值相同,再按第二个字段排序,以此类推

my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] 
# 排序
result = document.find().limit(3).skip(3).sort({'age', -1, "name": 1})

更新数据

修改一条数据

my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] result = document.update_one({{"name": "张三" },"$set": {"age": 31}})

修改多条数据

my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] result = document.update_one({{"name": "张三" },{"$set": {"age": 31}}, {"multi": true }})

列值增长的修改

my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] result = document.update_one({{_id:"3"},{$inc:{likenum:NumberInt(1)}})

删除文档

my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] 

删除全部

document.remove({})
或
document.remove()

条件删除

document.remove({_id:"1"})

常用命令小结

my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']  
document = my_db['test-document'] 
选择切换数据库:use articledb
插入数据:document.insert({bson数据})
查询所有数据:document.find();
条件查询数据:document.find({条件})
查询符合条件的第一条记录:document.findOne({条件})
查询符合条件的前几条记录:document.find({条件}).limit(条数)
查询符合条件的跳过的记录:document.find({条件}).skip(条数)
修改数据:document.update({条件},{修改后的数据}) 或document.update({条件},{$set:{要修改部分的字段:数据})
修改数据并自增某字段值:document.update({条件},{$inc:{自增的字段:步进值}})
删除数据:document.remove({条件})
统计查询:document.count({条件})
模糊查询:document.find({字段名:/正则表达式/})
条件比较运算:document.find({字段名:{$gt:}})
包含查询:document.find({字段名:{$in:[1,值2]}})或document.find({字段名:{$nin:[1,值2]}})
条件连接查询:document.find({$and:[{条件1},{条件2}]})或document.find({$or:[{条件1},{条件2}]})

————————————————
上班真的好开心,需求bug来不停。

产品测试来回找,后端交互想上刑。

会议不停满楼跑,文档笔记要分清。

摸鱼睡觉一时爽,提测发布胆惊心。

大佬思绪跟得上,想法创意实践灵。

日常积累很重要,自我提高才算行。

暮然回首学生时,半载已过还未明。

处处少年何模样?如今胡须满颔停!
————————————————

http://www.lryc.cn/news/518581.html

相关文章:

  • Babylon.js 的 Mesh 与 Unity 的 GameObject:深入对比与分析
  • MySQL安装,配置教程
  • Android折叠屏适配(权宜之计)
  • Spark是什么?Flink和Spark区别
  • Cocos Creator 3.8 修改纹理像素值
  • 如何评价deepseek-V3 VS OpenAI o1 自然语言处理成Sql的能力
  • SQL左连接的两种不同情况示例和外连接示例
  • 【渗透测试术语总结】
  • Unity2D初级背包设计后篇 拓展举例与不足分析
  • Kafka优势剖析-幂等性和事务
  • MyBatis深入了解
  • 语音技术与人工智能:智能语音交互的多场景应用探索
  • Openwrt @ rk3568平台 固件编译实践(二)- ledeWRT版本
  • Windows下调试Dify相关组件(1)--前端Web
  • 对话|企业如何构建更完善的容器供应链安全防护体系
  • HTML5 缩放动画(Zoom In/Out)详解
  • C语言——文件IO 【文件IO和标准IO区别,操作文件IO】open,write,read,dup2,access,stat
  • 【C++习题】22.随机链表的复制
  • 备考蓝桥杯:数据结构概念浅谈
  • 【TI毫米波雷达】DCA1000不使用mmWave Studio的数据采集方法,以及自动化实时数据采集
  • 创建型模式3.建造者模式
  • 【集成学习】Boosting算法详解
  • 【Orca】Orca - Graphlet 和 Orbit 计数算法
  • 58. Three.js案例-创建一个带有红蓝配置的半球光源的场景
  • 【Git原理和使用】Git 分支管理(创建、切换、合并、删除、bug分支)
  • 义乌购的反爬虫机制怎么应对?
  • 消息中间件面试
  • 基于CLIP和DINOv2实现图像相似性方面的比较
  • 利用Python爬虫获取API接口:探索数据的力量
  • 【LeetCode】力扣刷题热题100道(1-5题)附源码 链表 子串 中位数 回文子串(C++)