私は多くの同様の構造化文書を含むコレクションを持っています.2つの文書は次のようになります
入力:
{
"_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_idReq: およびに属している場合、同じ のすべてのドキュメントのスコアを追加する必要が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}
}}
])
どうすればよいか教えてください。