如何使用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_one()进行相同操作:
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,
}
}
}
})
注:由于update_one
将返回写结果,而不是文件,如果你想返回实际的文档,然后尝试.find_one_and_update()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句