[英]update value inside the nested document in MongoDB ( pymongo )
如何使用 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
}
}
我需要 output 之類的
{'_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
將返回WriteResult而不是文檔,如果您想返回實際文檔,請嘗試.find_one_and_update()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.