如何根据数组是不是包含pymongo中的特定元素来更新所有文档?
Posted
技术标签:
【中文标题】如何根据数组是不是包含pymongo中的特定元素来更新所有文档?【英文标题】:How to update all documents based on whether an array contains a specific element in pymongo?如何根据数组是否包含pymongo中的特定元素来更新所有文档? 【发布时间】:2021-01-24 11:10:04 【问题描述】:我一直在尝试这个:
self.followersDbRef.update('followersList':'$elemMatch':'$eq':userID,'$addToSet':'feed':postDict,'$set':'_id':userID,multi=True,upsert=True)
但无济于事。 而是完全创建了另一个文档。
应该这样,每当我添加帖子时,所有其他关注我的用户都会将帖子复制到他们的提要中。
【问题讨论】:
【参考方案1】:在 mongoDB 中,基本查询 key: "value"
匹配精确匹配和数组内的匹配。因此,如果您的数据如下所示:
"key": "a",
"key": ["a", "b"]
那么下面的查询将匹配两个文档:
db.collection.find("key": "a")
考虑到这一点,这可能就是您正在寻找的:
self.followersDbRef.update(
'followersList': userID,
'$addToSet': 'feed':postDict,'$set':'_id':userID,
multi=True,
upsert=True
)
还要注意upsert
表示如果没有找到匹配项,则会插入一个文档。如果您不希望这种情况发生,您可以删除upsert=True
或将其更改为False
。
【讨论】:
以上是关于如何根据数组是不是包含pymongo中的特定元素来更新所有文档?的主要内容,如果未能解决你的问题,请参考以下文章
在 Oracle PL/SQL 中,如何检查 JSON 对象是不是包含特定键的元素