MongoDB는 기본적으로 시간을 UTC로 저장하며 모든 현지 시간 표현을 UTC로 변환하여 저장한다.
예를 들어, 한국에서 오전 10시라는 정보는 MongoDB에 저장될 때 오전 1시라 변환되어 저장된다.따라서 특정 시간에 해당하는 데이터를 Read 해오는 쿼리를 보낼 때마다 offset을 따로 빼거나 더해줘야 한다.
증말증말~~~ 귀찮다!
언어마다 현재 시간을 UTC로 변환해주는 모듈이 있을 거다. 그걸 이용하자.
내가 해야했던 쿼리는 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)
https://jacking75.github.io/go_dateTime/