2013-11-15 3 views
0

Casbah 드라이버를 통해 MongoDB를 사용하고 있으며 Java DateTime에있는 날짜 필드가 포함 된 문서를 저장하고 있습니다. 시간이 일정 간격으로 떨어지는 있지만 시간이 12의 배수가 아닌 MongoDB 레코드를 삭제하는 방법

  • 모든 레코드를 찾기 하루 3
  • 의 시간이 아닌 다중를 모든 레코드를 제거 하루

    • 제거 모든 레코드 : 나는 유사한 쿼리를 수행 할 필요가 시간이있는 날과 시간 11

    Joda DateTime의 변환 도우미가 단일 필드를 저장한다고 가정하면 간단한 방법이 있을까요? 아마 내가 리팩토링해서 타임 필드와 날짜 필드를 가져야할까요?

  • 답변

    1

    날짜 시간의 범위 연산자는 year-month-day-hour-etc의 단일 별개 범위에서만 작동하므로 많은 별개의 범위를 효과적으로 요구하는 쿼리에서는 작동하지 않습니다.

    MongoDB를 그래서 가능한 대안이 될 것 중 하나 일없이 그냥 시간을 나타내는 형식을 가지고 있지 않습니다

    약간 해키 : 년/월/일 또 다른 날짜 필드는 동일한에 '클립'인덱스 값 및 기존 필드에서 취한 시간/분/초 (모든 날짜가 하루로 축소됨) 일 경우 단일 범위는 해당 날짜의 시간과 일치 할 수 있습니다.

    대체 : 문자열로 표시된 시간으로 다른 필드를 인덱싱하고 다양한 조건 (예 : 2-4am 포함 :/^ {02,03,04} /)에 대한 정규식 일치를 구성합니다.

    두 가지 해결책 중 하나를 사용하면 필드를 인덱싱 할 수 있으며 쿼리는 인덱스를 효율적으로 사용해야합니다. 두 번째 해결책은 약간 더 현명한 것 같습니다.

    +0

    무엇을 권하고 싶습니까? – Edmondo1984

    관련 문제