MongoDB에서 날짜별로 컬렉션 정렬

Tahseen Tauseef 2023년6월20일
  1. MongoDB에서 sort() 기능 사용
  2. MongoDB에서 날짜별 정렬(오름차순 또는 내림차순)
  3. MongoDB에서 날짜 문자열로 정렬
  4. MongoDB에서 배열을 사용하여 날짜별로 정렬
MongoDB에서 날짜별로 컬렉션 정렬

이 MongoDB 자습서에서는 MongoDB에서 컬렉션을 정렬하는 문제에 대해 설명합니다. 데이터베이스에서 컬렉션을 정렬하는 다양한 방법을 간략하게 설명합니다.

MongoDB에서 sort() 기능 사용

이 문제는 MongoDB의 sort() 함수와 $sort 집계를 사용하여 해결됩니다. 이 도구를 사용하여 데이터를 오름차순 또는 내림차순으로 정렬할 수 있습니다.

예:

db.posts.find().pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "MongoDB is an open-source database",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "MySQL is a popular open-source relational database management system",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "SQL is a database computer language",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}

일부 데이터는 게시물 모음에 추가되며 날짜 필드는 이전 날짜가 먼저 표시되도록 오름차순으로 정렬하는 데 사용됩니다.

db.posts.find().sort({ date: 1 }).pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "MongoDB is an open-source database",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "MySQL is a popular open-source relational database management system",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "SQL is a database computer language",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}

정렬 후 첫 번째 문서에는 날짜 개체가 아닌 날짜 문자열이 있습니다. 문서 2의 날짜가 나중인 경우에도 날짜 문자열이 먼저 나타납니다.

MongoDB에서 날짜별 정렬(오름차순 또는 내림차순)

MongoDB에서 날짜를 내림차순으로 정렬하려면 sort() 함수를 사용하고 날짜 필드 이름 및 방향(오름차순 또는 내림차순)과 같은 매개변수를 제공합니다.

통사론:

sort(date : 1) #For ascending order
sort(date : -1) #For descending order

예:

 db.product.find().pretty()
{
        "_id" : 1,
        "item" : {
                "name" : "HighLander",
                "type" : "toyota"
        },
        "price" : 2.8
        "date" : "2021-01-01T00:00:00.000Z"
}
{
        "_id" : 2,
        "item" : {
                "name" : "Swift",
                "type" : "suzuki"
        },
        "price" : 3.9
        "date" : ISODate("2020-01-01T00:00:00Z")
}
{
        "_id" : 3,
        "item" : {
                "name" : "Mirage G4",
                "type" : "mitsubishi"
        },
        "price" : 3.2
        "date" : ISODate("2021-01-01T00:00:00Z")
}

제품 데이터베이스에 삽입된 문서입니다. 이제 내림차순으로 정렬됩니다.

질문:

db.product.find().sort(date:-1).pretty()
{
        "_id" : 3,
        "item" : {
                "name" : "Mirage G4",
                "type" : "mitsubishi"
        },
        "price" : 3.2
        "date" : ISODate("2021-01-01T00:00:00Z")
}
{
        "_id" : 2,
        "item" : {
                "name" : "Swift",
                "type" : "suzuki"
        },
        "price" : 3.9
        "date" : ISODate("2020-01-01T00:00:00Z")
}
{
        "_id" : 1,
        "item" : {
                "name" : "HighLander",
                "type" : "toyota"
        },
        "price" : 2.8
        "date" : "2021-01-01T00:00:00.000Z"
}

MongoDB에서 날짜 문자열로 정렬

MongoDB에는 날짜/시간을 저장하기 위한 두 가지 대체 기술이 있습니다. 날짜 개체는 문서에 날짜를 저장하는 첫 번째 메서드에서 사용됩니다.

통사론:

new Date();

질문:

db.product.insertOne({ "productId" : 101, "productDeliveryDateTime": new Date() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238757")
}

제품은 컬렉션 이름이고 Date() 개체는 날짜 필드를 삽입하는 데 사용되었습니다.

데이터베이스에 날짜 열을 저장하려면 두 번째 방법에서 ISODate()를 사용해야 합니다. ISO(International Organization for Standardization)는 국제 표준 개발에 전념하는 비영리 조직입니다.

통사론:

new ISODate();

질문:

db.product.insertOne({ "productId" : 102, "productDeliveryDateTime": new ISODate() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238758")
}

여기서 날짜 필드는 ISODate().를 사용하여 제품 컬렉션에 삽입됩니다. find() 메소드를 사용하여 모든 문서를 표시할 수 있습니다.

db.product.find().pretty()
{
        "_id" : ObjectId("611c9e39e1fdc428cf238757"),
        "productId" : 101,
        "productDeliveryDateTime" : ISODate("2021-08-18T05:44:25.081Z")
}
{
        "_id" : ObjectId("611ca108e1fdc428cf238758"),
        "productId" : 102,
        "productDeliveryDateTime" : ISODate("2021-08-18T05:56:24.144Z")
}

날짜/시간을 저장하는 가장 접근하기 쉬운 방법은 Date 개체를 사용하는 것입니다.

문서에 Date() 문자열 메서드와 ISODate() 메서드가 모두 있는 경우 MongoDB는 Date() 문자열 메서드 방향(오름차순 또는 내림차순)으로 문서를 정렬합니다. 정렬 후 표시되는 첫 번째 문서는 날짜 개체가 아닌 날짜 문자열이라는 점에 유의할 가치가 있습니다.

날짜가 문서 2의 날짜보다 이후인 경우에도 먼저 나타납니다.

질문:

 db.language.find().pretty()
{
        "_id" : 1,
        "item" : {
                "name" : "Python",
                "type" : "Very high level dynamic data types"
        },
        "price" : 2.8,
        "date" : "2021-01-10T00:00:00.000Z"
}
{
        "_id" : 2,
        "item" : {
                "name" : "C++",
                "type" : "High-level computer programming language"
        },
        "price" : 3.9,
        "date" : ISODate("2020-12-01T00:00:00Z")
}
{
        "_id" : 3,
        "item" : {
                "name" : "Java",
                "type" : "Java is a high-level, class-based, object-oriented programming language"
        },
        "price" : 3.2,
        "date" : ISODate("2021-08-01T00:00:00Z")
}

다음은 언어 모음에 추가된 문서 중 일부입니다. sort() 함수를 사용하여 정렬할 수도 있습니다.

질문:

 db.language.find().sort(date:1).pretty()
{
        "_id" : 1,
        "item" : {
                "name" : "Python",
                "type" : "Very high level dynamic data types"
        },
        "price" : 2.8,
        "date" : "2021-01-10T00:00:00.000Z"
}
{
        "_id" : 3,
        "item" : {
                "name" : "Java",
                "type" : "Java is a high-level, class-based, object-oriented programming language"
        },
        "price" : 3.2,
        "date" : ISODate("2021-08-01T00:00:00Z")
}
{
        "_id" : 2,
        "item" : {
                "name" : "C++",
                "type" : "High-level computer programming language"
        },
        "price" : 3.9,
        "date" : ISODate("2020-12-01T00:00:00Z")
}

모든 데이터를 오름차순으로 정렬한 후 날짜 필드를 사용하여 관찰할 수 있습니다. 첫 번째 필드는 날짜 문자열 필드입니다. 날짜/시간을 저장하는 가장 간단한 방법은 Date 개체를 사용하는 것입니다.

MongoDB가 동작하지 않는 이유는 여러 가지가 있을 수 있지만 MongoDB에서 날짜별 정렬로 동작하기 위해서는 몇 가지 절차를 기억해야 합니다.

  1. 데이터를 컬렉션에 저장하고 있다는 점을 항상 기억하십시오.
  2. 문서 내부에 날짜 필드를 저장하는 방법에는 두 가지가 있습니다.
  3. Date() 문자열 및 ISODate() 데이터 유형은 문서에 날짜를 저장하는 데 사용됩니다.
  4. sort() 메소드를 사용하여 날짜 필드를 정렬할 때 어떤 데이터 유형을 사용했는지 확인하십시오.

질문:

db.document.insertOne({ "productId" : 1001, "productDeliveryDateTime": new Date() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238802")
}

이 예제에서는 Date() 문자열을 사용하여 날짜를 추가하고 컬렉션 이름은 document입니다. 같은 방법으로 ISODate()를 사용하여 문서에 날짜를 삽입할 수 있습니다.

MongoDB에서 배열을 사용하여 날짜별로 정렬

sort() 함수를 사용하여 MongoDB의 배열을 사용하여 날짜별로 정렬합니다. 함수에서 날짜 필드와 정렬 방향(오름차순 또는 내림차순)을 제공해야 합니다.

다음 예제에서는 컬렉션에 배열 형식의 일부 데이터를 추가합니다.

 db.student.insertMany([
      {
        "name"      : "Tom",
        "age"       : 21,
        "timestamp" : new ISODate("2021-04-01" )
      },
      {
        "name"      : "Emma",
        "age"       : 25,
        "timestamp" : new ISODate("2021-10-31" )
      },
      {
        "name"      : "John",
        "age"       : 29,
        "timestamp" : new ISODate("2021-05-02")
      }
]) 
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("611df0e76cc7e05e5e7fe74b"),
                ObjectId("611df0e76cc7e05e5e7fe74c"),
                ObjectId("611df0e76cc7e05e5e7fe74d")
        ]
}

student는 컬렉션 이름이고 ISODate() 메서드는 날짜를 입력하는 데 사용됩니다. Date() 문자열 메서드도 사용할 수 있습니다.

질문:

 db.student.find().sort({timestamp:1}).pretty()

{
        "_id" : ObjectId("611df0e76cc7e05e5e7fe74b"),
        "name" : "Tom",
        "age" : 21,
        "timestamp" : ISODate("2021-04-01T00:00:00Z")
}
{
        "_id" : ObjectId("611df0e76cc7e05e5e7fe74d"),
        "name" : "John",
        "age" : 29,
        "timestamp" : ISODate("2021-05-02T00:00:00Z")
}
{
        "_id" : ObjectId("611df0e76cc7e05e5e7fe74c"),
        "name" : "Emma",
        "age" : 25,
        "timestamp" : ISODate("2021-10-31T00:00:00Z")
}

모든 문서는 오름차순으로 정렬되며 pretty() 기능도 사용됩니다. 이를 통해 읽기 쉬운 방식으로 결과를 제공할 수 있습니다.

이 기사에서는 오름차순 및 내림차순으로 다양한 방법을 사용하여 MongoDB에서 컬렉션을 정렬하는 방법을 자세히 설명합니다.

관련 문장 - MongoDB Sort