【发布时间】:2021-10-23 12:47:39
【问题描述】:
我收藏了一些类似的记录:
{
'_id': 1,
'test_field': [{'key1': 'value1'}, {'key2': 'value2'}]
}
test_field 是一个字典列表。如果任何键不存在,我需要在该列表中推送新的字典,如果存在,我需要更新该键的值。
示例:
-
{'key1': 'test_value'}→'test_field': [{'key1': 'test_value'}, {'key2': 'value2'}]
-
{'test_key': 'test_value2'}→'test_field': [{'key1': 'value1'}, {'key2': 'value2'}, {'test_key': 'test_value_2'}]
请帮忙
【问题讨论】:
-
可以使用更新操作-
$push。您可以在更新的 filter 中检查列表元素是否存在。或者,您可以只做一个$addToSet,这将仅在 t 不存在时添加列表元素。 -
我知道。但是只有当键不存在时,我才需要在列表中推送新的字典。如果密钥存在,我需要更新它的值。
-
然后你就可以使用聚合管道更新(这是MongoDB v4.2或更高版本的一个特性)。
标签: python mongodb list dictionary pymongo