allowDiskUse를 가져올 수 없습니다.Pymongo로 작업하는 것이 참입니다.
나는 마주치고 있습니다.aggregation result exceeds maximum document size (16MB)pymongo를 사용하는 mongodb 집계 오류입니다.
저는 처음에 그것을 극복할 수 있었습니다.limit()선택.하지만, 어느 순간 저는 그것을 얻었습니다.
Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in." error.
좋아요, 제가 쓸게요.{'allowDiskUse':True}선택.이 옵션은 명령줄에서 사용할 때 작동하지만 파이썬 코드에서 사용하려고 할 때 작동합니다.
result = work1.aggregate(pipe, 'allowDiskUse:true')
알겠습니다TypeError: aggregate() takes exactly 2 arguments (3 given)error. (이는 http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.aggregate 에서 제공된 정의에도 불구하고 aggregate(*kwargs)입니다.)
runCommand를 사용하거나 pymongo와 동등한 기능을 사용하려고 했습니다.
db.command('aggregate','work1',pipe, {'allowDiskUse':True})
그러나 이제 '집계 결과가 최대 문서 크기(16MB)를 초과합니다' 오류로 돌아갑니다.
당신이 알아야 할 것이 있다면요.
pipe = [{'$project': {'_id': 0, 'summary.trigrams': 1}}, {'$unwind': '$summary'}, {'$unwind': '$summary.trigrams'}, {'$group': {'count': {'$sum': 1}, '_id': '$summary.trigrams'}}, {'$sort': {'count': -1}}, {'$limit': 10000}]
감사해요.
그래서 순서대로:
aggregate하나의 방법입니다.두 개의 위치 인수가 필요합니다(self그것은 암묵적으로 통과되고, 그리고.pipeline) 및 임의의 수의 키워드 인수(로 전달되어야 함)foo=bar없으면=기호, 키워드 인수가 아닙니다.이것은 당신이 전화해야 한다는 것을 의미합니다.result = work1.aggregate(pipe, allowDiskUse=True).최대 문서 크기에 대한 오류는 Mongo에 내재되어 있습니다.Mongo는 16메가바이트보다 큰 문서(또는 그 배열)를 반환할 수 없습니다.당신이 우리에게 당신의 데이터와 코드를 주지 않았기 때문에 이유를 말할 수 없지만, 그것은 아마도 당신이 최종적으로 구축하고 있는 문서가 너무 크다는 것을 의미합니다.다음을 줄이십시오.
$limit매개 변수, 아마도?처음에는 1로 설정하고 테스트를 실행한 다음 테스트를 늘려서 결과가 얼마나 커지는지 확인합니다.
언급URL : https://stackoverflow.com/questions/27272699/cant-get-allowdiskusetrue-to-work-with-pymongo
'programing' 카테고리의 다른 글
| 날짜/시간 개체에서 피츠 시간대를 제거하려면 어떻게 해야 합니까? (0) | 2023.07.02 |
|---|---|
| 날짜별 SQL 그룹(시간) (0) | 2023.07.02 |
| 거래SQL에서 다른 트랜잭션을 실행합니다.SQL 스크립트 (0) | 2023.07.02 |
| Git master 브랜치를 분기된 저장소의 업스트림 브랜치로 재설정하려면 어떻게 해야 합니까? (0) | 2023.07.02 |
| 함수를 제외한 모든 변수 제거 (0) | 2023.07.02 |