PyMongo Получить все значения индекса для Sharded Cluster - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть сегментированный кластер и информация индекса:

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() без предоставления ключа сегмента кажется дорогостоящим.

...