У меня есть простой документ под названием «агенты» в коллекции под названием «mycoll» с набором данных примерно так:
{
'metadata': {
'agent-ids': ['fdfd', 'asdfasdf', 'rerere'],
'agent_ids': ['foo1', 'booo']
}
Я получил снимок документа:
snapshot = firestore.client().document('mycoll/agents').get()
Если я пытаюсь получить доступ к имени поля 'agent-ids', используя метод get () для этого снимка:
agent-list-with-hypens = snapshot.get('metadata.agent-ids')
ValueError: Path метаданные.agent-идентификаторы не используются, остаток: -ids
Однако, если я пытаюсь получить доступ к «agent_ids» с помощью метода get (), это прекрасно работает:
print(snapshot.get('metadata.agent_ids'))
['foo1', 'booo']
Мой вопрос заключается в том, что является причиной такого различного поведения имен полей с '-' и почему?Любая документация, которая объясняет об этом?Я понимаю, что snapshot.get () принимает аргумент FieldPath вместо простой строки, но существующая документация API не предупреждает, что имена полей с '-' не допускаются в строках имени пути к полю, ограниченных '.'На самом деле snapshot.get(firestore.client().field_path('metadata', 'agent-ids'))
работает просто отлично.