我似乎遇到了PyMongo / MongoDB中$ each修饰符的问题。假设我有一个名为tags
的数组。
我可以像这样更新数据库,它可以工作:
for tag in tags:
db_collection.update({'username':username},{'$push':{'docs.tags': tag }})
但是,我认为使用$each
修饰符会更有效,而不是对数据库执行多次写入。从理论上讲,这可以在没有循环的情况下编写:
db_collection.update({'username':username},{'$push':{'docs.tags': {'$each': tags} }})
但它不起作用。似乎PyMongo没有检测到$ each修饰符或其他东西。它仍然存储,但结果是这样的字典:
{'$each': [tag1, tag2, ...] }
我写作的方式是否存在问题,或者这实际上无需担心。如果我是第一种方式,那么是否会对性能产生影响。
答案 0 :(得分:0)
事实证明我的mongoDB版本不支持$ push的$ each修饰符。 $ addToSet可以工作,但我最终会升级我的mongoDB。