我已經收集了許多類似的結構化文檔更新,兩個文件看起來像聚集在MongoDB中
輸入:
{
"_id": ObjectId("525c22348771ebd7b179add8"),
"cust_id": "A1234",
"score": 500,
"status": "A"
"clear": "No"
}
{
"_id": ObjectId("525c22348771ebd7b179add9"),
"cust_id": "A1234",
"score": 1600,
"status": "B"
"clear": "No"
}
默認情況下,clear
所有文檔"No"
,
請求:我必須添加相同的所有文檔的得分cust_id
,只要它們屬於status
"A"
和status
"B"
。如果score
超過2000
那麼我必須更新clear
屬性爲"Yes"
對於所有具有相同cust_id
的文檔。
預期輸出:
{
"_id": ObjectId("525c22348771ebd7b179add8"),
"cust_id": "A1234",
"score": 500,
"status": "A"
"clear": "Yes"
}
{
"_id": ObjectId("525c22348771ebd7b179add9"),
"cust_id": "A1234",
"score": 1600,
"status": "B"
"clear": "Yes"
}
是因爲1600 + 500 = 2100和2100> 2000
我的方法: 我只能通過聚合函數得到的總和,但更新失敗
db.aggregation.aggregate([
{$match: {
$or: [
{status: 'A'},
{status: 'B'}
]
}},
{$group: {
_id: '$cust_id',
total: {$sum: '$score'}
}},
{$match: {
total: {$gt: 2000}
}}
])
請告訴我該怎麼做。
感謝提前:)
你能描述失敗是怎麼發生的嗎?有沒有錯誤,或類似的東西? –
沒有錯誤本身,但我發現很難有一個聲明中的更新和聚合函數在一起,我對mongodb很新,我正在嘗試cmd中的場景。 – Sam