如何向MongoDB空数组添加值?排查$push与$set失效问题
问题解决
你的代码存在一个致命的语法错误:查询条件里的键名写成了_id:,多了个多余的冒号,导致MongoDB无法匹配到目标文档,所以后续的update_one操作根本没有执行。
修正后可以把两次合并为单次更新操作,无需额外先创建空数组:
if len(row['fractions']) == 0: collection.update_one( {'_id': member.id}, {"$push": {"fractions": faction['_id']}}, upsert=True # 可选:如果匹配不到文档则自动创建新文档 )
额外说明:
- 即使
fractions字段不存在,$push操作会自动将其初始化为数组并添加元素,不需要提前用$set创建空数组。 - 若需要确保目标文档一定存在,加上
upsert=True参数即可在无匹配时自动生成新文档。
内容的提问来源于stack exchange,提问作者Arthur Langley-Reddle
相关产品推荐
相关产品推荐

