首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新MongoDB中嵌套文档中的值( pymongo )

更新MongoDB中嵌套文档中的值( pymongo )
EN

Stack Overflow用户
提问于 2020-04-07 15:00:35
回答 1查看 249关注 0票数 1

如何使用MongoDB和python更新数据库中的值

以下是我要更新的文档的架构:

代码语言:javascript
复制
{'_id': ObjectId('5e8c8f19efd3d269180afdf6'), 
 'student': 2, 
 'sem': 
 [
     {
         'sem_2': {
              'c': 90, 
              'c++': 98, 
              'java': 82, 
              'go': 96, 
              'python': 99
                 }
        }, 

      {
          'sem_1': {
              'daa': 90, 
              'dbms': 70, 
              'es': 79, 
              '.net': 89, 
              'ds': 88
          }
      }
 ]

}

我想更新文档中的"sem_1“值。

代码语言:javascript
复制
{

          'sem_1': {
              'daa': 99, 
              'dbms': 99, 
              'es': 99, 
              '.net': 99, 
              'ds': 99
          }

}

我需要输出就像

代码语言:javascript
复制
{'_id': ObjectId('5e8c8f19efd3d269180afdf6'), 
 'student': 2, 
 'sem': 
 [
     {
         'sem_2': {
              'c': 90, 
              'c++': 98, 
              'java': 82, 
              'go': 96, 
              'python': 99
                 }
        }, 

      {
          'sem_1': {
              'daa': 99, 
              'dbms': 99, 
              'es': 99, 
              '.net': 99, 
              'ds': 99
          }
      }
 ]

}

我正在使用PyMongo,有办法更新这种文档吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-07 15:28:39

您可以使用位置$操作符在MongoDB中这样做:

代码语言:javascript
复制
db.collection.updateOne(
  { student: 2, "sem.sem_1": { $exists: true } }, // You need to have this `sem.sem_1` check in order to make `$` work
  {
    $set: {
      "sem.$": {
        sem_1: {
          daa: 99,
          dbms: 99,
          es: 99,
          ".net": 99,
          ds: 99,
        }
      }
    }
  }
);

pymongo中:

您可以使用一()进行同样的操作:

代码语言:javascript
复制
db.collection.update_one({ student: 2, "sem.sem_1": { $exists: true } }, 
      {
        $set: {
          "sem.$": {
            sem_1: {
              daa: 99,
              dbms: 99,
              es: 99,
              ".net": 99,
              ds: 99,
            }
          }
        }
      })

注意: As update_one将返回WriteResult而不是文档,如果您想返回实际文档,则尝试更新()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61083081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档