【问题标题】:MongoDB updateMany CommandMongoDB updateMany 命令
【发布时间】:2021-08-29 05:13:33
【问题描述】:

我一直在尝试使用 updateMany 通过“_id”更新我的 MongoDB 表。我在 MongoDB 纪录片中找不到我想要更新的方式或命令。我使用 python 来操作数据。

这是我的条目:

Tbl = {
    "_id": {
        "$oid": "001"
    },
    "name": "Alisha",
    "age": 24,
    "userid": 378824346,
    "salary": 30000
},
{
    "_id": {
        "$oid": "002"
    },
    "name": "Lana",
    "age": 22,
    "userid": 378824347,
    "salary": 20000
},
{
    "_id": {
        "$oid": "003"
    },
    "name": "Ivan",
    "age": 26,
    "userid": 378824348,
    "salary": 40000
},
{
    "_id": {
        "$oid": "004"
    },
    "name": "Yuri",
    "age": 25,
    "userid": 378824349,
    "salary": 34000
}

我想使用 updateMany() 一次更新三个条目。我的尝试如下:


Tbl.updateMany({
    '_id': {
        '$in': ["001", 
                "002", 
                "003"]
    }
}, {
    '$set': [{'age': 25, 'salary': 35000}, 
             {'age': 23, 'salary': 25000}, 
             {'age': 27, 'salary': 45000}]
})

我想知道我是否能够像这样更新 MongoDB 中的许多条目。提前感谢您的宝贵时间。

【问题讨论】:

  • 这是批量更新,单个updateMany()查询是不可能的,你可以使用bulkWrite()

标签: python mongodb pymongo


【解决方案1】:

以下是正确的命令

Tbl.bulkWrite([pymongo.UpdateOne(
         { "name" : "Alisha" }, { "$set" : {'age': 25, 'salary': 35000}}), 
               pymongo.UpdateOne(
         { "name" : "Ivan" }, { "$set" : {'age': 23, 'salary': 25000}})])

【讨论】:

    【解决方案2】:

    UpdateMany 不适用于多个集合查询。它只需要对多个文档进行一组查询。 使用带有 updateOne 查询的循环,或者如果您想在单个查询中使用 bulkWrite https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/

    Tbl.bulkWrite([
        { 
          updateOne : {
         "filter" : { "_id" : ""001"" },
         "update" : { $set : {'age': 25, 'salary': 35000} 
         } } },
        { 
          updateOne : {
         "filter" : { "_id" : ""002"" },
         "update" : { $set : {'age': 23, 'salary': 25000} 
        } } },
    ])
    

    【讨论】:

    猜你喜欢
    • 2021-12-23
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多