2017-09-26 3 views
0

J'essaie d'additionner 2 champs présents dans tous les documents (nombre_de_contemporels et retweet_count.) Puis en ajoutant le résultat comme un nouveau champ (ou une mise à jour):

filter = {'user.screen_name':author} 
db.dwh_twt_tweets.update_many(filter= filter, update= {"$project":{ 
            'favorite_count':'$favorite_count', 
            'retweet_count':'$retweet_count', 
            'interactions':{"$add": 
              ['$favorite_count','$retweet_count']} 
               } 
               } 
              ) 

Je reçois:

raise WriteError(error.get("errmsg"), error.get("code"), error) 
pymongo.errors.WriteError: Unknown modifier: $project 

comme alternative j'ai essayé de remplacer projet $ pour mettre $, mais dans ce cas, l'erreur que je reçois est:

pymongo.errors.WriteError: The dollar ($) prefixed field '$add'  
in 'interactions.$add' is not valid for storage. 
+0

Juste enlevé (filtre =, mise à jour =), mêmes erreurs –

Répondre

0

« update_many » n'accepte pas les mêmes opérateurs que « total », s'il vous plaît voir le manuel MongoDB pour la liste des opérateurs de mise à jour qui sont actuellement mis en œuvre:

https://docs.mongodb.com/manual/reference/operator/update/

Il est impossible de ajoutez deux champs en utilisant les opérateurs de mise à jour. Vous devrez utiliser "find" pour récupérer les documents et ajouter les champs en Python, puis "$ set" les champs avec "update" pour la somme.