2012-11-18 3 views
3

나는 사용할 수없는 mongodb capped 콜렉션을 사용하고 있습니다. FIFO 규칙에 따라 가장 오래된 레코드를 제거하고 싶지 않기 때문에 최대 크기로 설정하고 싶습니다.MongoDB Capped Collection 최대 허용 크기

캡 된 컬렉션의 기능을 유지하면서 가능한 한 오랫동안 데이터를 계속 유지하고 싶습니다.

감사합니다.

+0

최대 크기에 도달했을 때 가장 오래된 문서를 제거하지 않으려면 대신 어느 문서를 제거 하시겠습니까? – JohnnyHK

+0

이상적으로 아무 것도 제거하지 않았습니다 ..... DB에 일정 기간 만 삽입 할 것입니다. 그래서 내가 문서를 제거하지 않도록 최대 크기를 알고 싶습니다. – user94628

+2

TTL 제한 시간이나 크기 제한에 도달하지 않으면 덮어 쓴 컬렉션에서 아무 것도 제거하지 못하는 유일한 방법은 'emptycapped'을 사용하여 전체 컬렉션을 삭제하는 것입니다. 개별 문서는 삭제할 수 없습니다. – platforms

답변

6

원하는만큼 큰 여백을 만들 수 있습니다. create_collectionsize 매개 변수를 공간이 부족하지 않을만큼 큰 값으로 설정하면됩니다. 이 경우

db.create_collection('captest', capped=True, size=20000000000) 
+0

답변 해 주셔서 감사합니다. – user94628

+0

다음과 같이 capped 컬렉션을 만들 수도 있습니다. db.createCollection ("mycoll", {capped : true, size : 100000}) – user94628

1

당신은 (바이트) 크기를 사용하여 덮인 컬렉션을 만들 수 있으며, 최대 (문서의 최대 개수를 유지하기 위해), 또는 둘 :

이 같이

pymongo - >

self.db.create_collection('system_health_log', capped=True, size=5242880, max=5000) 

몽고 쉘 ->

db.createCollection("system_health_log", { capped : true, size : 5242880, max : 5000 }) 

Capped Collections에서 here을 더 참조하십시오.

+0

max 속성이 컬렉션에 영향을 미치지 않는 것 같습니다. 서버 버전 3.2를 사용하고 있습니다. collections에 대한 통계()가 끝나면 최대 값은 NumberLong ("6223372036 ...") – Yarimi

+0

입니다. 기존 컬렉션이있는 경우 해당 컬렉션으로 변환해야한다고 생각합니다. 자세한 내용은 여기를 참조하십시오. https://docs.mongodb.com/manual/core/capped-collections/ – radtek