У меня есть сегментированный кластер и информация индекса:
client.test_db.test_collection.index_information()
выглядит следующим образом:
{'_id_': {'key': [('_id', 1)],
'ns': 'test_db.test_collection',
'v': 2},
'test_id_hashed': {'key': [('test_id', 'hashed')],
'ns': 'test_db.test_collection',
'v': 2}}
Мне нужно перебрать все документы в коллекции:
for doc in client.test_db.test_collection.find({}):
do_something(doc)
Однако это кажется медленным, так как запрос должен просмотреть все сегменты, чтобы найти каждый документ. Я считаю, что было бы быстрее, если бы я мог перебирать каждый документ по идентификатору, так как он проиндексирован, но я не могу найти быстрый способ получить все значения идентификатора, кроме:
ids = []
for doc in client.test_db.test_collection.find({}):
ids.append(doc['test_id'])
Есть ли лучший (более быстрый) способ получить этот список значений для индексированного идентификатора? Поскольку у меня есть сегментированный кластер, вызов функции find()
без предоставления ключа сегмента кажется дорогостоящим.