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