我在名为“ mycoll”的集合下有一个名为“ agents”的简单文档,其数据集如下所示:
{
'metadata': {
'agent-ids': ['fdfd', 'asdfasdf', 'rerere'],
'agent_ids': ['foo1', 'booo']
}
我得到了文档快照:
snapshot = firestore.client().document('mycoll/agents').get()
如果我尝试在此快照上使用get()方法访问“ agent-ids”字段名称:
agent-list-with-hypens = snapshot.get('metadata.agent-ids')
ValueError:路径元数据.agent-id未使用,残基:-ids
但是,如果我尝试使用get()方法访问“ agent_ids”,则效果很好:
print(snapshot.get('metadata.agent_ids'))
['foo1','booo']
我的问题是什么导致带有'-'的字段名称出现这种不同的行为,为什么?有任何文档对此进行解释吗?据我了解,snapshot.get()会使用FieldPath参数而不是纯字符串,但是现有的API文档并未警告以'。'分隔的字段路径名称字符串中不允许带有'-'的字段名称。
实际上,snapshot.get(firestore.client().field_path('metadata', 'agent-ids'))
可以正常工作。
答案 0 :(得分:0)
基于documentation,这是字段路径的约束:
因此,包含破折号的字段名称/路径将引发 ValueError 。上述约束条件也说明了snapshot.get(firestore.client().field_path('metadata', 'agent-ids'))
正常工作的原因是因为字段名称包含在反引号中。