MongoDB에서 ISODate를 사용한 날짜 쿼리
- 
          
            MongoDB의 Date()메서드
- 
          
            Date()메서드의 동작
- 
          
            MongoDB의 쿼리에서 Date()메서드 사용
- MongoDB에서 날짜순 정렬
- MongoDB에서 작동하지 않는 날짜순 정렬
- 
          
            MongoDB에서 ISODate()를 사용한 작업 날짜 쿼리
 
이 MongoDB 지침 게시물은 Date() 메서드를 설명합니다. 이 문서에서는 날짜 쿼리를 사용하는 다양한 접근 방식에 대해 설명합니다.
MongoDB의 Date() 메서드
    
Date() 메서드는 날짜를 문자열 또는 Date 개체로 반환합니다.
- MongoDB 셸 또는 mongosh에서 Date()메서드는 현재 날짜를 문자열로 반환합니다.
- new Date()함수는 현재 날짜가 포함된- Date객체를 반환합니다. ISODate 도우미는 mongosh에 의해- Date개체를 감싸고 있으며 ISODate는 UTC(Universal Time)입니다.
new Date() 함수 또는 ISODate() 메소드를 사용하여 '0'에서 '9999' 사이의 연도가 포함된 ISO-8601 날짜 문자열을 지정하여 특정 날짜를 정의할 수 있습니다. 이러한 함수는 다음 형식을 허용합니다.
- 제공된 날짜가 포함된 ISODate는new Date("")에 의해 반환됩니다.
- new Date("")는 클라이언트의 현지 시간대에서- DateTime을 지정하고 해당- DateTime이 포함된 ISODate를 UTC로 반환합니다.
- new Date("")는 UTC에서- DateTime을 가져오고 UTC에서 해당- DateTime과 함께 ISODate를 반환합니다.
- new Date(integer>)는 UNIX epoch(1970년 1월 1일) 이후 밀리초 단위로 지정된- DateTime이 있는 ISODate 인스턴스를 반환합니다.
Date() 메서드의 동작
‘Date’ 개체는 Unix 시대(1970년 1월 1일) 이후의 밀리초를 나타내는 부호 있는 64비트 정수로 내부적으로 유지됩니다. 모든 데이터베이스 프로시저 및 드라이버는 전체 64비트 범위를 지원하지 않습니다.
포함 범위 0에서 9999까지의 연도가 포함된 날짜는 안전하게 처리할 수 있습니다.
MongoDB의 쿼리에서 Date() 메서드 사용
다음 코드는 product 컬렉션에 1과 같은 _id가 있는 문서가 없는 경우 dateAdded 필드가 현재 날짜로 설정된 문서를 추가합니다.
암호:
db.products.updateOne(
   { _id: 1 },
   {
     $set: { item: "apple" },
     $setOnInsert: { dateAdded: new Date() }
   },
   { upsert: true }
)
Date() 메서드를 사용하여 다음 예제와 같이 날짜를 문자열로 반환합니다.
var myDateString = Date();
mongosh는 날짜 유형의 객체를 ISODate 도우미로 래핑합니다. 그러나 객체는 ‘날짜’ 유형으로 유지됩니다.
다음 예제에서는 new Date()를 사용하여 지정된 UTC DateTime.이 있는 Date 객체를 반환합니다.
var myDate = new Date("2016-05-18T16:00:00Z");
MongoDB에서 날짜순 정렬
이 문제는 MongoDB의 sort() 함수와 $sort 집계를 사용하여 해결됩니다. 이 도구를 사용하여 데이터를 오름차순 또는 내림차순으로 정렬할 수 있습니다.
코드 예:
db.posts.find().pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "Hi there",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "Hello",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "World",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}
일부 데이터는 게시물 모음에 추가되며 날짜 필드는 이전 날짜가 먼저 표시되도록 오름차순으로 정렬하는 데 사용됩니다.
코드 예:
db.posts.find().sort({ date: 1 }).pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "Hi there",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "Hello",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "World",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}
정렬한 후에는 첫 번째 문서에 날짜 개체가 아닌 날짜 문자열이 있으므로 기록해 둡니다.
문서 2의 날짜가 나중에 초기화되더라도 날짜 문자열이 먼저 나타납니다.
MongoDB에서 작동하지 않는 날짜순 정렬
MongoDB가 동작하지 않는 이유는 여러 가지가 있을 수 있지만 MongoDB에서 날짜별 정렬로 동작하기 위해서는 몇 가지 절차를 기억해야 합니다.
- 도움을 받으면 데이터를 컬렉션에 저장한다는 점을 항상 기억하십시오.
- 문서 내부에 날짜 필드를 저장하는 방법에는 두 가지가 있습니다.
- Date()문자열 및- ISODate()데이터 유형은 문서에 날짜를 저장하는 데 사용됩니다.
- sort()메소드를 사용하여 날짜 필드를 정렬할 때 어떤 데이터 유형을 사용했는지 확인하십시오.
코드 예:
db.document.insertOne({ "productId" : 1001, "productDeliveryDateTime": new Date() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238802")
}
날짜는 Date() 문자열을 사용하여 추가되며 컬렉션 이름은 문서입니다. 같은 방법으로 ISODate()를 사용하여 문서에 날짜를 삽입할 수 있습니다.
MongoDB에서 ISODate()를 사용한 작업 날짜 쿼리
$gte 연산자와 ISODate()를 사용하여 MongoDB에서 ISODate로 날짜 쿼리를 수행합니다. 개념을 더 잘 이해하기 위해 문서를 사용하여 컬렉션을 만들어 봅시다.
다음은 문서로 컬렉션을 구성하는 쿼리입니다.
질문:
> db.dateDemo.insertOne({"StudentName":"John","StudentAge":26,"AdmissionDate":new ISODate("2013-06-07")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a65799064dcd4a68b70ea")
}
find() 기능은 컬렉션의 모든 문서를 표시할 수 있습니다.
질문:
db.dateDemo.find().pretty();
출력:
-function-to-display-documents-in-a-collection.webp)
다음은 MongoDB에서 ISODate()를 사용한 날짜 쿼리입니다.
질문:
> db.dateDemo.find({"AdmissionDate":{"$gte": ISODate("2013-06-07T00:00:00Z")}}).pretty();
출력:
-in-MongoDB.webp)