Здесь у меня есть данные, хранящиеся в Firestore, и у меня есть ключ timeslots
, в котором хранится список JSON, который я хотел бы фильтровать по строковому значению (например, 3 AM (EST), 4 AM (EST)) непосредственно из Firebase. Обычно я могу сделать следующее в Python:
from google.cloud import firestore
db = firestore.Client()
ref = db.collection('submissions')
submissions = []
for idx, doc in enumerate(ref.stream()):
submission = doc.to_dict()
submission['id'] = doc.id
submissions.append(submission)
, где submissions
- это список, который выглядит примерно так:
[{'submission_date': DatetimeWithNanoseconds(2020, 7, 10, 20, 58, 9, 330598, tzinfo=<UTC>),
'title': 'Testing submission',
'authors': ['Mr. A', 'Mr. B'],
'timeslots': ['3 AM (EST)', '4 AM (EST)'],
'abstract': 'No abstract here',
'id': '12345'},
{'submission_date': DatetimeWithNanoseconds(2020, 7, 10, 20, 58, 9, 330598, tzinfo=<UTC>),
'title': 'Testing submission 2',
'authors': ['Mr. C', 'Mr. D'],
'timeslots': ['4 AM (EST)', '5 AM (EST)'],
'abstract': 'No abstract here too',
'id': '123456'},
...
]
Обычно я делаю следующее, чтобы время фильтрации == 3 AM (EST)
в данном случае:
submissions_filtered = [
submission for submission in submissions
if '3 AM (EST)' in submission.get('timeslots', '')
]
Я не уверен, смогу ли я сделать это прямо из Firestore stream
(или чего-то еще). Если бы кто-то знал, было бы здорово.