programing

MongoDB 정렬

kakaobank 2023. 5. 7. 11:45
반응형

MongoDB 정렬

주제에 대한 "범프" 기능을 구현하고 싶습니다.주제를 범핑하면 새 "bump_date" 필드가 나타납니다."bump_date" 필드가 있을 때 "created" 필드인 것처럼 정렬되도록 정렬하고 싶습니다.다음은 제 db.topics의 예입니다.

{
    "text" : "test 1",
    "created" : "Sun Nov 20 2011 02:03:28 GMT-0800 (PST)"
},
{
    "text" : "test 2",
    "created" : "Sun Nov 18 2011 02:03:28 GMT-0800 (PST)"
},
{
    "text" : "test 3",
    "created" : "Sun Nov 17 2011 02:03:28 GMT-0800 (PST)",
    "bump_date: : "Sun Nov 19 2011 02:03:28 GMT-0800 (PST)"
}

"test 1", "test 3", "test 2" 순으로 정렬이 반환되기를 원합니다.

MongoDB에서 정렬은 다음과 같이 수행됩니다.

db.collection.find({ ... spec ... }).sort({ key: 1 })

어디에1오름차순이며-1하강 중입니다.

구체적인 예에서는 다음과 같습니다.db.topics.find().sort({ bump_date: 1 })비록 그것을 "https_at"와 같은 것으로 부르는 것이 더 나을 수도 있습니다.

또한 "bump_date" 필드에 인덱스를 추가할 수도 있습니다.

  • 정렬: http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
  • 인덱스: http://www.mongodb.org/display/DOCS/Indexes

Brian Hicks가 제안했듯이, updated_at 필드를 추가로 생성하는 것이 방법입니다.이렇게 하면 문서가 작성될 때 처음에는 create_at과 updated_at이 동일하게 될 수 있습니다.

{
     "created_at": xxx,
     "updated_at": xxx
}

그런 다음 범프 이벤트가 있을 때 updated_at 필드를 현재 시간으로 설정하여 "범프"하면 updated_at 필드를 정렬하여 원하는 순서를 달성할 수 있습니다.

또한:

db.collection.find( { $query: {}, $orderby: { column : -1 } } )

여기서 1은 오름차순이고 -1은 내림차순입니다.

현재 mongodb에서는 여러 columns.eg 에서 사용자 정의 기준에 따라 정렬할 수 없습니다.여기서 기능은 돌아오는 것이었을 것입니다.bump_date설정된 경우, 리턴을 반환합니다.created

여기에 언급된 대로 서버 측 또는 클라이언트 측 코드를 사용해야 합니다.

몽고 콤플렉스 정렬?

또는 기본 쿼리 및 정렬을 계속 사용하려면 다음을 수행해야 합니다.

  • 키를 만듭니다.bump_date와 동등한.created새 레코드가 생성될 때마다이는 데이터 오버헤드가 아닙니다. 앞으로 모든 주제가 한 번씩 중복될 것으로 예상할 수 있기 때문입니다.bump_date필드가 추가됩니다.그러니까 처음부터 더하면 됩니다.

  • 아티클을 범핑할 때마다 필드bump_date.

다음과 같이 변경하면 예제 문서는 다음과 같이 나타납니다.

{
    "text" : "test 1",
    "created" : "Sun Nov 20 2011 02:03:28 GMT-0800 (PST)",
    "bump_date" : "Sun Nov 20 2011 02:03:28 GMT-0800 (PST)"
},
{
    "text" : "test 2",
    "created" : "Sun Nov 18 2011 02:03:28 GMT-0800 (PST)",
    "bump_date" : "Sun Nov 18 2011 02:03:28 GMT-0800 (PST)" 
},
{
    "text" : "test 3",
    "created" : "Sun Nov 17 2011 02:03:28 GMT-0800 (PST)",
    "bump_date: : "Sun Nov 19 2011 02:03:28 GMT-0800 (PST)"
}

당신은 할 것입니다.ensureIndexbump_date 필드에 있습니다.이제 필요한 데이터를 쉽게 쿼리할 수 있습니다.

db.topics.find().sort({ bump_date: 1 })

언급URL : https://stackoverflow.com/questions/8206778/mongodb-sorting

반응형