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
'programing' 카테고리의 다른 글
| 그래서... 이 NoSQL 같은 것은 (0) | 2023.05.07 |
|---|---|
| 잘못된 포스트백 또는 콜백 인수입니다.이벤트 유효성 검사는 "를 사용하여 활성화됩니다. (0) | 2023.05.07 |
| 사용자가 강제 종료한 경우 iOS에서 백그라운드로 앱을 실행합니까? (0) | 2023.05.07 |
| 이클립스에 가장 적합한 JVM 설정은 무엇입니까? (0) | 2023.05.02 |
| PowerShell의 가상 환경? (0) | 2023.05.02 |