Mongo -- python使用update_many方法


mongo集合中

  • 可以看到name字段的值存在两个c开头


    在这里插入图片描述

代码演示

  • 使用正则
  • 查询到集合中name字段的值是c开头的数据,再把age字段的值设为100
# -*- coding: utf-8 -*-
# @Author   : zbz

from pymongo import MongoClient


def main():
    client = MongoClient()
    users_coll = client["data"]["users"]

    query = {"name": {"$regex": "^c"}}
    update = {"$set": {"age": 100}}
    users_coll.update_many(query, update)


if __name__ == '__main__':
    main()

再来看mongo集合

  • 在字段name的值是c开头的数据中,age字段的值变成100


    在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个使用 PythonPyMongo 库连接和操作 MongoDB 数据库的类的示例: ```python import pymongo class MongoDB: def __init__(self, host='localhost', port=27017, username=None, password=None): # 建立连接 self.client = pymongo.MongoClient(host=host, port=port) # 如果有用户名和密码,则进行身份验证 if username and password: self.client.admin.authenticate(username, password) def get_database(self, db_name): # 获取数据库 return self.client[db_name] def get_collection(self, db_name, coll_name): # 获取数据库的集合 return self.client[db_name][coll_name] def insert_one(self, db_name, coll_name, doc): # 插入单条文档 return self.client[db_name][coll_name].insert_one(doc) def insert_many(self, db_name, coll_name, docs): # 插入多条文档 return self.client[db_name][coll_name].insert_many(docs) def update_one(self, db_name, coll_name, filter, update): # 更新单条文档 return self.client[db_name][coll_name].update_one(filter, update) def update_many(self, db_name, coll_name, filter, update): # 更新多条文档 return self.client[db_name][coll_name].update_many(filter, update) def delete_one(self, db_name, coll_name, filter): # 删除单条文档 return self.client[db_name][coll_name].delete_one(filter) def delete_many(self, db_name, coll_name, filter): # 删除多条文档 return self.client[db_name][coll_name].delete_many(filter) def find_one(self, db_name, coll_name, filter): # 查询单条文档 return self.client[db_name][coll_name].find_one(filter) def find(self, db_name, coll_name, filter, projection=None, sort=None, limit=0, skip=0): # 查询多条文档 cursor = self.client[db_name][coll_name]. ### 回答2: 使用Python编写一个可以进行Mongo数据库的增删改查操作的类,包含分页查询功能,代码如下: ```python from pymongo import MongoClient class MongoCRUD: def __init__(self, host, port, database, collection): self.client = MongoClient(host, port) self.db = self.client[database] self.collection = self.db[collection] def create(self, data): """ 创建文档 """ self.collection.insert_one(data) def read(self, query={}, page=None, limit=None): """ 查询文档 """ if page is not None and limit is not None: skip = (page - 1) * limit result = self.collection.find(query).skip(skip).limit(limit) else: result = self.collection.find(query) return list(result) def update(self, query, update_data): """ 更新文档 """ self.collection.update_many(query, {'$set': update_data}) def delete(self, query): """ 删除文档 """ self.collection.delete_many(query) ``` 使用示例: ```python mongo = MongoCRUD('localhost', 27017, 'mydatabase', 'mycollection') # 创建文档 data = {'name': 'Alice', 'age': 25} mongo.create(data) # 查询文档 result = mongo.read({'age': {'$lte': 30}}, page=1, limit=10) for doc in result: print(doc) # 更新文档 query = {'name': 'Alice'} update_data = {'age': 26} mongo.update(query, update_data) # 删除文档 query = {'name': 'Alice'} mongo.delete(query) ``` 以上代码实现了一个可以进行Mongo数据库的增删改查操作的类,并包含了分页查询功能。在初始化类时,需要传入MongoDB的主机地址、端口号、数据库名称和集合名称。然后通过调用类的方法实现文档的增删改查操作。在查询时,可以通过`page`和`limit`参数指定查询的页码和每页显示的数量,实现分页查询功能。 ### 回答3: 在Python中可以使用pymongo库进行MongoDB数据库的增删改查操作,并结合分页功能。下面是一个示例的类,实现了MONGO数据库的增删改查以及分页查询的功能。 ```python from pymongo import MongoClient from math import ceil class MongoCRUD: def __init__(self, db_name, collection_name): self.client = MongoClient() # 连接MongoDB self.db = self.client[db_name] # 选择数据库 self.collection = self.db[collection_name] # 选择集合 # 插入数据 def insert_data(self, data): result = self.collection.insert_one(data) return result.inserted_id # 删除数据 def delete_data(self, query): result = self.collection.delete_many(query) return result.deleted_count # 更新数据 def update_data(self, query, update): result = self.collection.update_many(query, {"$set": update}) return result.modified_count # 查询数据 def find_data(self, query, page_size, page_num): total = self.collection.count_documents(query) # 获取总数据量 total_pages = int(ceil(total/page_size)) # 计算总页数 skip = page_size * (page_num - 1) # 计算需要跳过的数据量 data = list(self.collection.find(query).skip(skip).limit(page_size)) # 分页查询数据 return data, total_pages # 示例用法 if __name__ == "__main__": db_name = "test_database" collection_name = "test_collection" crud = MongoCRUD(db_name, collection_name) # 插入数据 data = {"name": "Alice", "age": 25} inserted_id = crud.insert_data(data) print("插入数据的ID:", inserted_id) # 更新数据 query = {"name": "Alice"} update = {"age": 26} modified_count = crud.update_data(query, update) print("更新数据的数量:", modified_count) # 删除数据 query = {"name": "Alice"} deleted_count = crud.delete_data(query) print("删除数据的数量:", deleted_count) # 查询数据 query = {} page_size = 10 # 每页数据量 page_num = 2 # 当前页码 data, total_pages = crud.find_data(query, page_size, page_num) print("查询结果:", data) print("总页数:", total_pages) ``` 这个类封装了MongoDB的增删改查操作,并提供了分页查询的功能。通过调用相应的方法,可以实现对Mongo数据库的数据进行增加、删除、更新和查询等操作,并且支持分页查询,可以指定每页数据量和当前页码。在示例用法中,我们演示了如何使用该类进行基本的数据操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值