mongoengine 包含并存在于同一查询中

问题描述 投票:0回答:1

是否可以在 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})
python mongoengine
1个回答
0
投票

您可以使用

&
组合条件:

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)
© www.soinside.com 2019 - 2024. All rights reserved.