2017-10-04 7 views
1

pymongo를 사용하여 MongoDB 컬렉션에 유효성 검사기를 추가하려고합니다.pymongo를 사용하여 Mongodb 컬렉션에 유효성 검사기 추가

명령 내가 here

에서 적응 실행하려면 싶습니다이하는 것과 같습니다

db.runCommand({ 
    collMod: "contacts", 
    validator: { phone: { $type: 'string' } }, 
    validationLevel: "moderate" 
}) 
{ "ok" : 1 } 

그리고 그 후 문자열이 아닌 데이터 형식 주석에게 전화 필드

를 삽입하면 오류가 발생합니다

파이썬을 사용하여 다음 작업을 수행했습니다.

db.command({'collMod': 'contacts', 
      'validator': {'phone': {'$type': 'string'}}, 
      'validationLevel': 'moderate'}) 
. 
. 
. 
InvalidDocument: Cannot encode object: Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test_table'), 'contacts') 

필자는 파이썬 해석이 잘못되었다고 확신하지만 정확한 번역을 찾지 못했거나 파이썬으로도 가능한지 여부를 확인합니다.

답변

1

결국 해결책을 찾았습니다. 희망적으로 다른 사람을 도울 수 있습니다. 모든 사람이이 문서를 읽을 실패 물론,의

...

..주의 : command 문서의 키의 순서가 중요한 (이하 "동사"먼저 와야한다), 그래서 명령에 여러 개의 키를 필요로 (예 : findandmodify) 의 인스턴스를 사용해야합니다 : 클래스 : ~bson.son.SON 또는 문자열과 kwargs로 대신 파이썬 dict

알 유효하므로 OrderedDict

query = [('collMod', 'contacts'), 
     ('validator', {'phone': {'$type': 'string'}}), 
     ('validationLevel', 'moderate')] 
query = OrderedDict(query) 
db.command(query) 
{'ok': 1.0} 
+0

이 유효합니다. 감사 :) – Adarsh