で更新して集約私は多くの類似の構造化文書を収集してきた、文書の二つが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"
、
Req:status
"A"
とstatus
"B"
に属していれば、同じcust_id
のすべての文書のスコアを追加する必要があります。 score
が2000
を超えている場合は、同じcust_id
を持つすべてのドキュメントについて、属性を"Yes"
に更新する必要があります。
予想される出力:
{
"_id": ObjectId("525c22348771ebd7b179add8"),
"cust_id": "A1234",
"score": 500,
"status": "A"
"clear": "Yes"
}
{
"_id": ObjectId("525c22348771ebd7b179add9"),
"cust_id": "A1234",
"score": 1600,
"status": "B"
"clear": "Yes"
}
はいため、+ 500 = 2100 1600、および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