在尝试使用$ 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.
答
“update_many”不接受同一运营商的“聚合”,请参阅MongoDB的手册当前实施的更新运营商列表:
https://docs.mongodb.com/manual/reference/operator/update/
这是不可能的使用更新运算符添加两个字段。您需要使用“find”来获取文档并在Python中添加字段,然后“$ set”字段中的“update”为总和。
刚删除(filter =,update =),同样的错误 –