如何使用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,有没有办法更新此类文档?
答案 0 :(得分:0)
您可以在MongoDB中使用位置$运算符来做到这一点:
this.M.AutoInit()
在 pymongo 中:
您可以使用.update_one()进行同样的操作:
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,
}
}
}
}
);
注意::由于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,
}
}
}
})
将返回WriteResult而不是文档,如果您想返回实际文档,请尝试.find_one_and_update()