Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更新MongoDB(pymongo)中嵌套文档内的值_Python_Mongodb_Pymongo - Fatal编程技术网

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

Python 更新MongoDB(pymongo)中嵌套文档内的值,python,mongodb,pymongo,Python,Mongodb,Pymongo,如何使用MongoDB和python更新数据库中的值 以下是我要更新的文档的架构: {'_id': ObjectId('5e8c8f19efd3d269180afdf6'), 'student': 2, 'sem': [ { 'sem_2': { 'c': 90, 'c++': 98, 'java': 82, 'go': 96,

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

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

{'_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”值

{

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

}
我需要像这样的输出

{'_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,有没有办法更新此类文档?

您可以在MongoDB中使用位置运算符:

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中:

您可以使用以下方法执行相同操作:


注意:由于
update\u one
将返回而不是文档,如果您想返回实际文档,请尝试您可以在MongoDB中使用位置运算符:

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中:

您可以使用以下方法执行相同操作:

注意:因为
update\u one
将返回而不是文档,如果您想返回实际文档,请重试