sourcecode

mongodb에 날짜/시간을 저장하는 가장 좋은 방법

codebag 2023. 2. 22. 21:52
반응형

mongodb에 날짜/시간을 저장하는 가장 좋은 방법

문자열, 정수 타임스탬프, mongo datetime 객체를 사용하는 것을 보았습니다.

가장 좋은 방법은 네이티브 JavaScript Date 객체를 저장하는 것입니다.이 객체는 BSON 네이티브 Date 객체에 매핑됩니다.

> db.test.insert({date: ISODate()})
> db.test.insert({date: new Date()})
> db.test.find()
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:42.389Z") }
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:57.240Z") }

네이티브 유형은 맵 축소 작업에서 사용할 수 있는 유용한 메서드 전체를 즉시 지원합니다.

필요에 따라서, 간단하게 변환할 수 있습니다.DateUNIX 타임스탬프와의 객체1), 사용getTime()방법 및Date(milliseconds)각각 컨스트럭터.

1) 엄밀히 말하면, Unix 타임스탬프는 초단위로 측정됩니다.JavaScript Date 객체는 Unix Epoch 이후 밀리초 단위로 측정합니다.

삽입 시간을 나타내는 하나의 데이터 스탬프가 이미 _id 개체에 있습니다.

따라서 삽입 시간이 필요한 경우 이미 완료되어 있습니다.

mongodb 쉘 로그인

ubuntu@ip-10-0-1-223:~$ mongo 10.0.1.223
MongoDB shell version: 2.4.9
connecting to: 10.0.1.223/test

항목을 삽입하여 데이터베이스 생성

> db.penguins.insert({"penguin": "skipper"})
> db.penguins.insert({"penguin": "kowalski"})
> 

이 데이터베이스를 현재 데이터베이스로 만듭니다.

> use penguins
switched to db penguins

행을 되돌립니다.

> db.penguins.find()
{ "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
{ "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }

각 행을 yyy-MM-dd HH:mm:ss 형식으로 가져옵니다.

> db.penguins.find().forEach(function (doc){ d = doc._id.getTimestamp(); print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()) })
2014-12-23 3:4:41
2014-12-23 3:4:53

마지막 한 줄에 혼란스러우시다면, 저는 https://stackoverflow.com/a/27613766/445131를 통해 그 작동 방법에 대해 설명하겠습니다.

Pymongo를 사용하면 MongoDB는 네이티브 Python을 저장합니다.datetime로서 반대하다.Date필드. 이거DateMongoDB의 필드는 나중에 날짜 관련 쿼리를 용이하게 할 수 있습니다(예: 쿼리 간격).따라서 이러한 코드는 Python에서 작동합니다.

from datetime import datetime

datetime_now = datetime.utcnow()
new_doc = db.content.insert_one({"updated": datetime_now})

그 후 데이터베이스에 다음과 같은 필드가 표시됩니다(Mongo 나침반을 사용하여 db를 봅니다).문자열(따옴표 없음)로 저장되지 않고 다음과 같이 표시됩니다.Date필드 유형으로 지정합니다.

여기에 이미지 설명 입력

javascript 사용에 대해서는, 거기서도 유효합니다.+00:00(내 경우는 UTC) 또는Z당신의 날짜가 끝나면 Javascript는 시간대 정보와 함께 날짜를 제대로 읽을 수 있을 것입니다.

다음 코드를 사용하여 문서에 할당할 있는 datetime 변수를 만드십시오(날짜 개체가 아닌 datetime 개체를 만듭니다).

from datetime import date
from datetime import datetime
import random

def random(date):
    my_year=random.randint(2020,2022)
    my_month=random.randint(1,12)
    my_day=random.randint(1,28)

    selected=datetime(year = my_year, month = my_month, day = my_day, hour = 0, minute = 0, second = 0)


def insert_objects(collection):

      collection.insert_one( { "mydate": random_date() })

언급URL : https://stackoverflow.com/questions/3778428/best-way-to-store-date-time-in-mongodb

반응형