📜  使用 PyMongo 更新集合中的所有文档

📅  最后修改于: 2022-05-13 01:54:25.335000             🧑  作者: Mango

使用 PyMongo 更新集合中的所有文档

MongoDB 是一个开源的面向文档的数据库。 MongoDB以键值对的形式存储数据,是一个NoSQL数据库程序。 NoSQL 一词的意思是非关系型的。

PyMongo 包含用于与 MongoDB 数据库交互的工具。现在让我们看看如何更新集合中的所有文档。

更新集合中的所有文档

PyMongo 包含一个update_many()函数,它更新所有满足给定查询的文档。

update_many() 接受以下参数 -

  1. filter –它是第一个参数,它是更新满足查询的文档所依据的条件。
  2. 更新运算符-它是第二个参数,其中包含要在文档中更新的信息。
  3. upsert- (可选)它是一个布尔值。如果设置为 true 并且没有与过滤器匹配的文档,则会创建一个新文档。
  4. array_filters - (可选)它是一个过滤器文档数组,用于确定要修改哪些数组元素以对数组字段进行更新操作。
  5. bypass_document_validation – (可选)设置为True时跳过文档验证的布尔值。
  6. collation – (可选)指定操作的语言特定规则。
  7. session – (可选)一个 ClientSession。

MongoDB 中的更新运算符

设定值:

  • $set:用于设置字段值。
  • $setOnInsert:仅在插入新文档时更新值。
  • $unset:删除字段及其值。

数字运算符:

  • $inc:将值增加给定的数量。
  • $min/$max:返回最小值或最大值。
  • $mul:将值乘以给定的数量。

杂项运算符:

  • $currentDate:将字段的值更新为当前日期。
  • $rename : 重命名一个字段

现在让我们通过一些例子来理解。

样本数据库:

我们将在本文中看到一些用例,其中更新许多记录可能很有用:

  1. 根据条件更改或增加多个元素。
  2. 将新字段插入多个或所有文档。

示例 1:所有分数大于 35 的学生都通过了。

Python3
from pymongo import MongoClient
  
  
# Creating an instance of MongoClient 
# on default localhost
client = MongoClient('mongodb://localhost:27017')
  
# Accessing desired database and collection
db = client.gfg
collection = db["classroom"]
  
# Update passed field to be true for all
# students with marks greater than 35
collection.update_many(
    {"marks": { "$gt": "35" } },
        {
            "$set": { "passed" : "True" }
        }
)


Python
from pymongo import MongoClient
  
  
# Creating an instance of MongoClient 
# on default localhost
client = MongoClient('mongodb://localhost:27017')
  
# Accessing desired database and collection
db = client.gfg
collection = db["classroom"]
  
# Address filed to be added to all documents
collection.update_many(
        {},
        {"$set":
            {
                "Address": "value"
            }
        },
    
   # don't insert if no document found
   upsert=False,
   array_filters=None
   )


查询后的数据库:

示例 2:将名为地址的新字段添加到所有文档

Python

from pymongo import MongoClient
  
  
# Creating an instance of MongoClient 
# on default localhost
client = MongoClient('mongodb://localhost:27017')
  
# Accessing desired database and collection
db = client.gfg
collection = db["classroom"]
  
# Address filed to be added to all documents
collection.update_many(
        {},
        {"$set":
            {
                "Address": "value"
            }
        },
    
   # don't insert if no document found
   upsert=False,
   array_filters=None
   )

数据库查询后: