[MongoDB] 날짜 쿼리하기

배채윤·2020년 10월 26일

MongoDB는 기본적으로 시간을 UTC로 저장하며 모든 현지 시간 표현을 UTC로 변환하여 저장한다.

예를 들어, 한국에서 오전 10시라는 정보는 MongoDB에 저장될 때 오전 1시라 변환되어 저장된다.따라서 특정 시간에 해당하는 데이터를 Read 해오는 쿼리를 보낼 때마다 offset을 따로 빼거나 더해줘야 한다.

증말증말~~~ 귀찮다!

언어마다 현재 시간을 UTC로 변환해주는 모듈이 있을 거다. 그걸 이용하자.

Golang에서 처리 방법

내가 해야했던 쿼리는 documents 중 intime key의 value로 오늘 날짜가 있는지 찾는 query였다.

KST, _ := time.LoadLocation("Asia/Seoul")
now, _ := time.Now()
startTime := time.Date(now.Year(), now.Month(), now.Date(), 0,0,0,0, KST).UTC() // 자정
endTime := time.Date(now.Year(), now.Month(), now.Date(), 23,59,59,0, KST).UTC() // 자정 직전
filter := bson.M{"intime": bson.M{"$gte": startTime, "$lte": endTime}}

cursor, err := collection.Find(ctx, filter)

Reference

profile
새로운 기술을 테스트하고 적용해보는 걸 좋아하는 서버 개발자