是否可以在 mongodb(特别是用于 python 的 mongoengine)中的同一查询中进行 contains 和exists 调用?
我需要解析的数据存储在映射字段中,我需要在其中进入键并确定感兴趣的键是否存在并包含特定单词。这是数据结构的示例
{_id: "Final Fantasy"
"playtime": {"2024-01-01 1:00:00" : {"deaths":5, "levels_gained":10},
"2024-01-03 4:00:00" : {"deaths":2, "levels_gained":5},
"2024-01-07 3:00:00" : {"deaths":2, "levels_gained":5}}}
目前,为了在地图字段中查找非常具体的键,我执行以下操作
entries: List[GameDoc] = []
dt_str = "2024-01-03 4:00:00"
query = Q(**{f'playtime__{dt_str}__exists': True})
entries.extend(GameDoc.objects(query))
但是当我尝试在查询中包含 contains 时,它找不到文档
query = Q(**{f'playtime__contains__{dt_str}__exists': True})
query = Q(**{f'playtime__{dt_str}__contains': True})
您可以使用
&
组合条件:
from mongoengine import Q
dt_str = "2024-01-03 4:00:00"
contains_word = "your_specific_word"
query = Q(**{f'playtime__{dt_str}__exists': True}) & Q(**{f'playtime__{dt_str}__contains': contains_word})
entries = GameDoc.objects(query)