写点什么

高效使用 PyMongo 进行 MongoDB 查询和插入操作

作者:小万哥
  • 2023-11-14
    广东
  • 本文字数:1756 字

    阅读完需:约 6 分钟

高效使用 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,或者扫描下方二维码,关注公众号,即可获取最新文章。


看完如果觉得有帮助,欢迎点赞、收藏关注



发布于: 刚刚阅读数: 3
用户头像

小万哥

关注

代码如人生 2023-02-09 加入

编程爱好者

评论

发布
暂无评论
高效使用 PyMongo 进行 MongoDB 查询和插入操作_Python_小万哥_InfoQ写作社区