/ / Comment calculer un champ dans tous les documents en fonction d'une valeur d'un document particulier dans la même collection? - mongodb, collections, pymongo, agrégation-cadre, mongodb-agrégation

Comment calculer un champ dans tous les documents en fonction de la valeur d'un document particulier de la même collection? - mongodb, collections, pymongo, agrégation-cadre, mongodb-agrégation

Je suis nouveau sur MongoDb et j'essaie de faire des calculs de base. J'ai une collection, calc, comme ci-dessous

{ "_id" : 1, "value" : 10}
{ "_id" : 2, "value" : 20}
{ "_id" : 3, "value" : 20}
{ "_id" : 4, "value" : 30}
{ "_id" : 5, "value" : 30}
{ "_id" : 6, "value" : 30}

Je veux ajouter la valeur de "_id": 1 à tous les champs de valeur des documents de cette collection et créer un nouveau champ avec le résultat calculé. Le résultat final que je recherche est donc le suivant.

{ "_id" : 1, "value" : 10, "sumup":20 }
{ "_id" : 2, "value" : 20, "sumup":30 }
{ "_id" : 3, "value" : 20, "sumup":30 }
{ "_id" : 4, "value" : 30, "sumup":40 }
{ "_id" : 5, "value" : 30, "sumup":40 }
{ "_id" : 6, "value" : 30, "sumup":40 }

Réponses:

0 pour la réponse № 1

Vous pouvez essayer ceci dans le shell mongo:

db.collection.aggregate([
{
"$project": {
"value": 1,
"sumup": {
"$add": [ "$value", (db.collection.findOne({"_id": 1})).value ]
}
}
}
])