Ho una collezione con molti documenti strutturati simili, due del documento appare comeaggregazione con l'aggiornamento in MongoDB
ingresso:
{
"_id": ObjectId("525c22348771ebd7b179add8"),
"cust_id": "A1234",
"score": 500,
"status": "A"
"clear": "No"
}
{
"_id": ObjectId("525c22348771ebd7b179add9"),
"cust_id": "A1234",
"score": 1600,
"status": "B"
"clear": "No"
}
Di default il clear
per tutti i documenti è "No"
,
Req: Devo aggiungere il punteggio di tutti i documenti con lo stesso cust_id
, a condizione che appartengano a status
"A"
e status
"B"
. Se lo score
supera 2000
, allora devo aggiornare l'attributo clear
a "Yes"
per tutto il documento con lo stesso cust_id
.
uscita prevista:
{
"_id": ObjectId("525c22348771ebd7b179add8"),
"cust_id": "A1234",
"score": 500,
"status": "A"
"clear": "Yes"
}
{
"_id": ObjectId("525c22348771ebd7b179add9"),
"cust_id": "A1234",
"score": 1600,
"status": "B"
"clear": "Yes"
}
Sì, perché 1600 + 500 = 2100, e il 2100> 2000.
mio approccio: sono stato in grado di ottenere la somma per funzione di aggregazione solo, ma fallito ad aggiornare
db.aggregation.aggregate([
{$match: {
$or: [
{status: 'A'},
{status: 'B'}
]
}},
{$group: {
_id: '$cust_id',
total: {$sum: '$score'}
}},
{$match: {
total: {$gt: 2000}
}}
])
prega di suggerire me come procedo.
Grazie in anticipo :)
Potresti descrivere come si è verificato il fallimento? C'è stato un errore o qualcosa del genere? –
Nessun errore di per sé, ma ho trovato difficoltà ad avere funzioni di aggiornamento e aggregazione insieme in una dichiarazione, sono molto nuovo a mongodb, sto provando lo scenario in cmd. – Sam