在尝试使用$ add和update_many(并使用$ project)时,在pymongo中给出'Unknow:modifier':$ project

问题描述:

我想总结出现在所有文档中的2个字段(favorite_count和retweet_count。)然后添加结果作为一个新的领域(或更新):

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']} 
               } 
               } 
              ) 

我得到:

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

作为替代我试图替换为$项目$设置,但在这种情况下,错误,我得到是:

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

刚删除(filter =,update =),同样的错误 –

“update_many”不接受同一运营商的“聚合”,请参阅MongoDB的手册当前实施的更新运营商列表:

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

这是不可能的使用更新运算符添加两个字段。您需要使用“find”来获取文档并在Python中添加字段,然后“$ set”字段中的“update”为总和。