高效使用 PyMongo 进行 MongoDB 查询和插入操作
插入到集合中:
要将记录(在MongoDB中称为文档)插入到集合中,使用insert_one()方法。insert_one()方法的第一个参数是一个包含文档中每个字段的名称和值的字典。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
mydict = { "name": "John", "address": "Highway 37" }
x = mycol.insert_one(mydict)
返回 _id 字段:
insert_one()方法返回一个InsertOneResult对象,该对象具有一个属性inserted_id,其中包含插入的文档的ID。
mydict = { "name": "Peter", "address": "Lowstreet 27" }
x = mycol.insert_one(mydict)
print(x.inserted_id)
插入多个文档:
要在MongoDB中的集合中插入多个文档,使用insert_many()方法。insert_many()方法的第一个参数是包含要插入的数据的字典列表。
mylist = [
{ "name": "Amy", "address": "Apple st 652"},
{ "name": "Hannah", "address": "Mountain 21"},
{ "name": "Michael", "address": "Valley 345"},
# ...
]
x = mycol.insert_many(mylist)
# 打印插入文档的 _id 值列表
print(x.inserted_ids)
插入多个文档,指定ID:
如果不希望MongoDB为文档分配唯一的ID,可以在插入文档时指定 _id 字段。确保这些值是唯一的,两个文档不能具有相同的 _id。
mylist = [
{ "_id": 1, "name": "John", "address": "Highway 37"},
{ "_id": 2, "name": "Peter", "address": "Lowstreet 27"},
{ "_id": 3, "name": "Amy", "address": "Apple st 652"},
# ...
]
x = mycol.insert_many(mylist)
# 打印插入文档的 _id 值列表
print(x.inserted_ids)
查找一个:
要从MongoDB集合中选择数据,可以使用find_one()方法,它返回选择中的第一个文档。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
x = mycol.find_one()
print(x)
查找所有:
要从MongoDB集合中选择所有文档,可以使用find()方法。在find()方法中不指定参数会给出与SQL中的SELECT *相同的结果。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find():
print(x)
仅返回部分字段:
如果想仅返回部分字段,可以在find()方法的第二个参数中指定要包含在结果中的字段。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({}, {"_id": 0, "name": 1, "address": 1}):
print(x)
不允许在同一对象中同时指定0和1值:
不允许在同一对象中同时指定0和1值,除非其中一个字段是 _id 字段。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
# 会出现错误,因为同时指定了0和1值
for x in mycol.find({}, {"name": 1, "address": 0}):
print(x)
高级查询:
要进行高级查询,可以在查询对象中使用修饰符作为值。例如,使用大于修饰符 $gt 可以查找 "address" 字段以字母 "S" 或更高字母(按字母顺序)开头的文档。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
myquery = { "address": { "$gt": "S" } }
mydoc = mycol.find(myquery)
for x in mydoc:
print(x)
使用正则表达式过滤:
您还可以使用正则表达式作为修饰符,但正则表达式只能用于查询字符串。
例如,要仅查找 "address" 字段以字母 "S" 开头的文档,可以使用正则表达式 {"$regex": "^S"}。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
myquery = { "address": { "$regex": "^S" } }
mydoc = mycol.find(myquery)
for x in mydoc:
print(x)
最后
为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。
看完如果觉得有帮助,欢迎点赞、收藏和关注

高效使用 PyMongo 进行 MongoDB 查询和插入操作的更多相关文章
- MongoDB 文档的查询和插入操作
MongoDB是文档型数据库,有一些专门的术语,和关系型DB相似,但也有差异,例如,Collection类似于关系型DB的Table,document类似于row,key/value pair类似于c ...
- 多个程序对sql server中的表进行查询和插入操作导致死锁
最近在做一个项目,是要用多个程序对sql server中的相同的数据库进行操作(查询和插入),所以在开始的时候常会出现死锁问题,后来在网上进行了咨询,发现了一些解决方法,留作大家参考: 并发去操纵一张 ...
- C# 连接Oracle,进行查询,插入操作
注:OracleConnection和OracleCommand已被标注为[弃用的],可以使用System.Data.OleDb.OleDbConnection代替OracleCOnnection,使 ...
- 学习MongoDB 六: MongoDB查询(游标操作、游标信息)(三)
一.简介 db.collection.find()可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段.并返回到匹配文档的游标,可以随意修改查询限制.跳跃.和排序顺序的 ...
- 在SQL Server 2005中连接Oracle,完成查询、插入操作
建立指向Oracle的连接假设Oracle数据库的用户名为test,密码为test,在SQL Server数据库所在服务器上建立的指向Oracle数据库的服务命名为hisorcl.1. 在SQL Se ...
- 利用Native Client OLEDB 11 高效率地对SQL SERVER 进行查询和插入操作
前言: 鄙司原始用的都是ADO来访问数据库,而我现在着手的项目是从我的GPS历史数据库中,取出历时数据的一个接口,一个DLL.用ADO写完之后,测试下来,平均4000条的数据,需要 180 毫秒左右. ...
- python对solr进行查询、插入操作(GET\POST)
循环查询一个列表中词的个数: #coding=utf-8 import requests ls = [u'我', u'是', u'一个', u'天才', u'你', u'也是'] for item i ...
- mysq Point类型 查询和插入操作:insert和select
首先,创建一个表名为geometry2的表,然后增加一个名为gemo的point类型的字段. insert方法有4中,例如以下所看到的://============================== ...
- MongoDB(7)- 文档插入操作
插入方法 db.collection.insertOne() 插入单条文档到集合中 db.collection.insertMany() 插入多条文档到集合中 db.collection.insert ...
- [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“
mongodb 查询条件 这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...
随机推荐
- <学习笔记> 关于二项式反演
1 容斥原理的式子: \[|A1∪A2∪...∪An|=\sum_{1≤i≤n}|Ai|−\sum_{1≤i<j≤n}|Ai∩Aj|+...+(−1)^{n−1}×|A1∩A2∩...∩An| ...
- 使用lame以多进程方式转码wav为mp3
前言 lame以单进程的方式转码wav文件,之前量少,足够使用.如今每日wav文件数量极多,单进程的效率就不够用了,所以这里使用脚本的方式,启动多个lame进程转码wav文件. code01: aut ...
- Cilium系列-16-CiliumNetworkPolicy 实战演练
系列文章 Cilium 系列文章 前言 今天我们进入 Cilium 安全相关主题, 基于 Cilium 官方的<星球大战> Demo 做详细的 CiliumNetworkPolicy 实战 ...
- [PWN之路]堆攻击那些事儿
原文:https://www.freebuf.com/articles/endpoint/371095.html 0x00 前言 根据某大佬所说,pwn之路分为栈,堆,和内核.当前,如果你看到这个文章 ...
- 领域驱动设计(DDD):从基础代码探讨高内聚低耦合的演进
大家好,我是付威,一名已在编码第一线奋斗了十余年的程序员.在2019年我初次接触到领域驱动设计(Domain-Driven Design,简称DDD)的概念.在我的探索中,我发现许多有关DDD的教程过 ...
- api接口的使用原理是什么?
随着互联网的发展和不同系统之间的交互越来越频繁,API接口的使用已经成为软件开发和集成中不可或缺的一部分.API接口的使用原理是通过预定义的接口规范,软件系统可以调用或提供API接口的服务,来实现 ...
- 如何使用API接口获取Lazada商品详情数据
随着电商市场的不断发展壮大,越来越多的人开始选择在网上购买商品.其中,东南亚地区的Lazada电商平台备受欢迎.如果您是一名电商从业者,或者打算在Lazada上开店,那么获取商品详情信息将是一个非常重 ...
- QA|20221010|SecureCRT|我们5分钟前执行了a指令,但因为执行b指令打印了大量日志,把指令记录冲掉了,以后如何避免这种情况?
Q:我们5分钟前执行了a指令,但因为执行b指令打印了大量日志,把指令记录冲掉了,以后如何避免这种情况? A:如下配置
- torch-1 tensor & optim
开个新坑, pytorch源码阅读-从python代码开始读起. torch/ 1.tensor.py 继承自torch._C._TensorBase , 包括各种操作,TODO:随后看cpp代码 _ ...
- 探索计算机的I/O控制方式:了解DMA控制器的作用与优势
I/O控制方式 在前面我们已经了解到,每个设备都配备了一个设备控制器.当CPU向设备控制器发送命令并将其存储在寄存器中时,设备控制器会执行相应的操作.然而,尽管设备控制器会更新状态寄存器的状态,但是如 ...