PyMongo upsert가 "upsert는 bool의 인스턴스여야 합니다" 오류를 발생시킵니다.
Python에서 MongoDB 업데이트를 실행 중입니다.다음 대사가 있습니다.
self.word_counts[source].update({'date':posttime},{"$inc" : words},{'upsert':True})
그러나 다음과 같은 오류가 발생합니다.
raise TypeError("upsert must be an instance of bool")
그렇지만True
나한테는 불의 한 예처럼 보여!
이 업데이트를 올바르게 작성하려면 어떻게 해야 합니까?
PyMongo의 세 번째 주장은upsert
사전이 아닌 부울을 전달해야 합니다.코드 변경 대상:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, True)
또는 패스upsert=True
키워드 인수로 지정합니다.
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, upsert=True)
당신의 실수는 아마도 에 대해 읽은 것 같습니다.update()
MongoDB 문서에 있습니다.의 JavaScript 버전update
다음과 같은 옵션 파라미터를 포함하는 세 번째 인수로 객체를 받아들입니다.upsert
그리고.multi
그러나 Python은 키워드 인수를 함수에 전달할 수 있기 때문에(위치 인수만 있는 JavaScript와 달리) 이는 불필요하며 PyMongo는 이러한 옵션을 옵션 함수 파라미터로 채택합니다.
http://api.mongodb.org/python/2.3/api/pymongo/collection.html#pymongo.collection.Collection.update에 따르면 True가 아닌 키워드로서 upsert를 전달해야 합니다.
self.word_counts[source].update({'date':posttime},{"$inc" : words},**{'upsert':True})
또는
self.word_counts[source].update({'date':posttime},{"$inc" : words},upsert=True)
True를 통과하는 것보다 더 나은 접근법입니다. 예를 들어 다음과 같은 다른 kwargs를 통과하고 싶은 것처럼.safe
또는multi
arg의 순서를 지키지 않으면 코드가 끊어질 수 있습니다.
upsert는 다음과 같이 위치 매개 변수 중 하나로 전달되어야 합니다.
self.word_counts[source].update(
{'date':posttime},
{"$inc" : words},
True)
또는 키워드 인수로, 다음과 같이
self.word_counts[source].update(
{'date':posttime},
{"$inc" : words},
upsert=True)
언급URL : https://stackoverflow.com/questions/5055797/pymongo-upsert-throws-upsert-must-be-an-instance-of-bool-error
'programing' 카테고리의 다른 글
반응 개발 도구가 Chrome 브라우저에서 로드되지 않음 (0) | 2023.03.17 |
---|---|
JSON 만드는 법특정 유형을 시리얼화할 때 ToString()을 호출하는 Net serializer? (0) | 2023.03.17 |
처리되지 않은 예외:InternalLinkedHashMap'은 '목록' 유형의 하위 유형이 아닙니다. (0) | 2023.03.12 |
Gson을 사용하여 알 수 없는 필드를 사용하여 JSON을 디코딩하려면 어떻게 해야 합니까? (0) | 2023.03.12 |
ORA-00054: 리소스가 사용 중이고 NOWAIT가 지정되어 있거나 타임아웃이 만료되었습니다. (0) | 2023.03.12 |