2017-10-04 6 views
0

형식 문자열의 인수,하지만 오류가 분명히인해 형식 오류에 인덱스를 만들 수 없습니다 : 충분하지 내가 pymongo와 인덱스를 만들려고하고

File "D:/Users/Dims/Design/EnergentGroup/Python GIS Developer/worker/Approach03\sentinel\mongo.py", line 46, in get_results_collection 
    results_collection.create_index(["uwi", "date_part"], name=index_name, unique=True) 
    File "C:\Anaconda3\lib\site-packages\pymongo\collection.py", line 1386, in create_index 
    name = kwargs.setdefault("name", helpers._gen_index_name(keys)) 
    File "C:\Anaconda3\lib\site-packages\pymongo\helpers.py", line 49, in _gen_index_name 
    return _UUNDER.join(["%s_%s" % item for item in keys]) 
    File "C:\Anaconda3\lib\site-packages\pymongo\helpers.py", line 49, in <listcomp> 
    return _UUNDER.join(["%s_%s" % item for item in keys]) 
TypeError: not enough arguments for format string 

과 실패, 오류 코드 생성 기본적으로 라이브러리 내부에서 발생 인덱스 이름은

def _gen_index_name(keys): 
    """Generate an index name from the set of fields it is over.""" 
    return _UUNDER.join(["%s_%s" % item for item in keys]) 

입니다.

index_name = 'uwi_date_part' 
if index_name not in index_information: 
    print("Creating index '%s'..." % index_name) 
    results_collection.create_index(["uwi", "date_part"], name=index_name, unique=True) 

index_name = 'uwi' 
if index_name not in index_information: 
    print("Creating index '%s'..." % index_name) 
    results_collection.create_index("uwi", name=index_name, unique=False) 

어떻게 극복 :

내 코드는 다음과 같다?

results_collection.create_index(["uwi", "date_part"], name=index_name, unique=True) 

당신은, "UWI"와 "date_part"두 필드에 인덱스를 원하는 :

답변

1

이 구문은 PyMongo이 요구하는 것이 아니다? 필드를 인덱싱 할 순서 (참조 : Optimizing MongoDB Compound Indexes)와 오름차순 또는 내림차순으로 인덱싱할지 여부를 신중하게 선택하십시오.

색인 "UWI"그 순서 "date_part"모두 상승하려면 다음을 수행하십시오

results_collection.create_index([("uwi", 1), ("date_part", 1)], name=index_name, unique=True) 

For more info on creating indexes with PyMongo, see the documentation합니다.