Spring Data MongoDB: Liefert die zuletzt geänderten Datensätze (Datumssortierung)

Spring Data MongoDB: zuletzt geänderte Datensätze abrufen (Datumssortierung)

In Mongodb können Sie sort () verwenden, um die Datumssortierung durchzuführen.

1. MongoDB-Sortierbeispiele

Um in Mongodb ein Datumsfeld zu sortieren, werden folgende Probleme ausgegeben:

//The '1' = sort ascending (oldest to newest)
db.domain.find().sort({lastModifiedDate:1})

{ "_id" : 1, "lastModifiedDate" : ISODate("2013-08-13T07:18:04.774Z") }
{ "_id" : 2, "lastModifiedDate" : ISODate("2013-09-03T08:12:16.309Z") }
{ "_id" : 3, "lastModifiedDate" : ISODate("2013-10-03T08:12:16.309Z") }
{ "_id" : 4, "lastModifiedDate" : ISODate("2013-11-03T08:12:16.326Z") }
{ "_id" : 5, "lastModifiedDate" : ISODate("2013-12-03T08:12:16.345Z") }

or

//The '-1' = sort descending (newest to oldest)
db.domain.find().sort({lastModifiedDate:-1})

{ "_id" : 5, "lastModifiedDate" : ISODate("2013-12-03T08:12:16.345Z") }
{ "_id" : 4, "lastModifiedDate" : ISODate("2013-11-03T08:12:16.326Z") }
{ "_id" : 3, "lastModifiedDate" : ISODate("2013-10-03T08:12:16.309Z") }
{ "_id" : 2, "lastModifiedDate" : ISODate("2013-09-03T08:12:16.309Z") }
{ "_id" : 1, "lastModifiedDate" : ISODate("2013-08-13T07:18:04.774Z") }

Wenn das Feld "lastModifiedDate" nicht indiziert ist und zu viele Daten zurückgibt, schlägt die Sortierung fehl und wird unter der Fehlermeldung angezeigt

db.domain.find().sort({lastModifiedDate:-1})

Sat Oct 12 11:51:43.055 JavaScript execution failed: SyntaxError: Unexpected token :
> db.domain.find({},{domainName:1}).sort({lastModifiedDate:1});
error: {
        "$err" : "too much data for sort() with no index.
                 add an index or specify a smaller limit"
        "code" : 10128
}

Um dies zu beheben, addieren Sie immerlimit() zusammen mitsort().

db.domain.find().sort({lastModifiedDate:-1}).limit(10)

2. Spring Data MongoDB: Sortierbeispiele

Verwenden Sie in Spring-Daten Folgendes:

import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

    //...
    Query query = new Query();
    query.limit(10);
    query.with(new Sort(Sort.Direction.DESC, "lastModifiedDate"));

    mongoOperation.find(query, Domain.class);