2016-08-06 1 views
2

이라는 이름의 필드는 파이썬에서 이라고합니다. pending=True 인 경우에만 1 시간 후에 문서를 제거하고 싶습니다. 무조건 1 시간 후에 문서를 제거해야한다면 만료 색인을 설정합니다. 일부 조건부 검사를 추가하여 영리하고 쉬운 방법으로 만료 색인이 있습니까?mongoDB의 만료 인덱스는 조건에 따라

미리 감사드립니다.

답변

1

나는 docs에 설명 된대로이 인덱스 만료 만 pending = True 경우 응용 프로그램에서 인덱스 필드를 설정 사용할 수 있지만 만료 된 문서의 정기적 인 청소에 일부 사용자 지정 논리를 추가 할 직접 수 없습니다 두렵다 - 문서로를 만료 인덱스 필드가 없으면 사용자가 요청한 것이 아니더라도 작업이 완료되어야합니다.

+0

제 경우에는 만기 인덱스를 초기에 설정해야합니다 (시작시 보류 = True이기 때문에). 보류 = False로 설정하면 인덱스를 제거해야합니다. 몽고인과 함께이 일을 성취 할 방법을 모르겠습니다. remove_index() 함수는 없으며 _meta 사전에서 항목을 제거하면 문서뿐만 아니라 전체 모음도 제거됩니다. 나는 False 대신 Null로 보류를 설정하는 아이디어가있다. 인덱스는 null에서 작동하지 않는다고 생각한다. 너는 무엇을 제안 하는가? – giliev

+0

펜딩을 False로 변경할 때마다 만료 인덱스가 기반으로하는 필드에 null을 설정할 수 있습니다. '보류 중'을 True로 되돌릴 때 나중에 값을 복원해야하는 경우 추가 필드를 도입하여 날짜 필드가 2 개가되도록 할 수 있습니다. 하나는 항상 날짜를 유지하고 다른 하나는 날짜를 보유합니다 보류 = True 일 때만. 이 경우 만기 인덱스는 물론 두 번째 필드를 기반으로합니다. 호프는 이해가 되길 바랍니다. – DAXaholic

+0

보류 중으로 다시 돌아가는 경우는 없으므로 하나의 색인으로 충분할 것입니다. 고마워요! :) – giliev