[英]Update all a field in all document based on another field in that document
我的數據庫中有學生文檔。 每個文檔都是一個學生,並且具有字段amountOwed
和tuition
。
我正在嘗試將amountOwed
更新為等於amountOwed + tuition.
我考慮過使用.find
查詢來獲取所有學生文檔,遍歷每個文檔並更新數據庫。
我還研究並在 mongo 文檔中找到了$set(aggregation)
和$addFields(aggregation)
但我不確定是否可以將其用於我想做的事情。
示例文檔:
{"studentName" : "Student1",
"amountOwed" : 100,
"tuition" : 100
},
{"studentName" : "Student2",
"amountOwed" : 0,
"tuition" : 500
}
Output應該是:
{"studentName" : "Student1",
"amountOwed" : 200,
"tuition" : 100
},
{"studentName" : "Student2",
"amountOwed" : 500,
"tuition" : 500
}
有沒有辦法在一個數據庫查詢中完成這一切?
也許使用updateMany
?
要添加值,您可以使用 Mongo 聚合查詢的$add表達式。
嘗試使用查詢:
db.collection.aggregate([
{
$project: {
studentName: 1,
tuition: 1,
_id: 0,
amountOwed: {
$add: [
"$amountOwed",
"$tuition"
]
}
}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.