在 PyMongo 中使用 MongoDB 查询文档

2023-04-15 00:00:00 pymongo 查询 文档

在 PyMongo 中使用 MongoDB 查询文档需要先连接 MongoDB,创建数据库和集合,然后通过集合对象调用查询方法进行查询。

  1. 连接 MongoDB

可以使用 MongoClient 对象创建 MongoDB 连接,例如:

from pymongo import MongoClient

client = MongoClient('localhost', 27017)

# 或者使用 MongoDB URI 进行连接
# client = MongoClient('mongodb://localhost:27017/')
  1. 创建数据库和集合

可以使用 MongoClient 对象进行数据库和集合的创建,例如:

db = client['test']  # 创建数据库
collection = db['example']  # 创建集合
  1. 插入文档数据

可以使用集合对象进行文档的插入,例如:

data = {
    'title': 'MongoDB 教程',
    'description': 'MongoDB 是一个 NoSQL 数据库',
    'by': 'pidancode.com',
    'url': 'http://www.pidancode.com/mongodb-tutorial/'
}

# 插入单个文档
collection.insert_one(data)

# 插入多个文档
data_list = [
    {
        'title' : 'Python 教程',
        'description': 'Python 是一种高级编程语言',
        'by': 'pidancode.com',
        'url': 'http://www.pidancode.com/python-tutorial/'
    },
    {
        'title' : 'Java 教程',
        'description': 'Java 是一种面向对象编程语言',
        'by': 'pidancode.com',
        'url': 'http://www.pidancode.com/java-tutorial/'
    }
]
collection.insert_many(data_list)
  1. 查询文档数据

可以使用集合对象的查询方法进行文档的查询,例如:

查询集合中所有文档:

cursor = collection.find()
for document in cursor:
    print(document)

# 或者使用列表推导式
documents = [document for document in collection.find()]
print(documents)

按条件查询文档:

# 查询 title 字段等于 "MongoDB 教程" 的文档
document = collection.find_one({'title': 'MongoDB 教程'})
print(document)

# 查询 by 字段等于 "pidancode.com" 的文档
cursor = collection.find({'by': 'pidancode.com'})
for document in cursor:
    print(document)

# 查询 title 字段包含 "教程" 的文档
cursor = collection.find({'title': {'$regex': '教程'}})
for document in cursor:
    print(document)
  1. 更新文档数据

可以使用集合对象的 update_one 或 update_many 方法进行文档的更新,例如:

# 将 title 字段等于 "MongoDB 教程" 的文档的 by 字段更新为 "皮蛋编程"
query = {'title': 'MongoDB 教程'}
update = {'$set': {'by': '皮蛋编程'}}
collection.update_one(query, update)
  1. 删除文档数据

可以使用集合对象的 delete_one 或 delete_many 方法进行文档的删除,例如:

# 删除 title 字段等于 "Java 教程" 的文档
query = {'title': 'Java 教程'}
collection.delete_one(query)

相关文章