Python 更新MongoDB(pymongo)中嵌套文档内的值
如何使用MongoDB和python更新数据库中的值 以下是我要更新的文档的架构: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,
{'_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
将返回而不是文档,如果您想返回实际文档,请重试