Les documents db.stuff sont:Mise à jour d'une nouvelle clé dans un document intégré
{ ...,
counts : [ {name: Alice, age: 18, pay: 27}, {name : Jen, age: 23, pay: 56}, ... ] ,
... }
J'utilise le code suivant pour essayer de mettre à jour les documents intégrés un par un. Je parcoure les documents incorporés, j'effectue des calculs et ensuite je veux définir une nouvelle clé dans chaque sous-document individuel.
x = [3, 45, 77, 61, 98, 76, 32, ... ]
for i in db.stuff.find():
for element in i['counts']:
x.append(element['pay'])
total = 1.0 - ((sorted(x).index(element['pay']) + 1)/float(len(x)))
db.stuff.update({'id': i['id']}, {'$set':{ element['new_key'] :total}})
x.remove(element['pay'])
Cependant cela renvoie <type 'exceptions.KeyError'>
ou < class 'bson.erros.InvalidDocument' >
, je crois qu'il est parce que je n'ai pas la bonne méthode pour insérer la nouvelle clé dans le document incorporé. Je dois trouver un remplacement pour {'$set':{ element['new_key'] :total}
mais je suis coincé. Merci de votre aide.
Peut-être que je manque quelque chose mais que les données finales devraient alors ressembler à: {..., compte: [{name: Alice, âge: 18, salaire: 27, ** nouvelle_key: total **}, {nom: Jen ... ** nouvelle_key: total2 **}] ...}? – IamAlexAlright
@IamAlexAlright oui absolument – Julia