2015-06-10 17 views
5

Ich habe ein Problem mit der Anzeige von Daten mit Sortierung. Hier ist meine Frage,Mongoose Sorting

Activity.find({"user_id": sesUser._id}, {}, {offset: 0, limit : 5, sort:{createdAt:1}}, function (e,a){ 
    ... 
    }); 

Ich habe Daten etwa 252 Länge und meine neuesten Daten 9. Juni 2015. Wenn ich diese Abfrage verwende ich nur die Daten erhalten von 5. Juni 2015/letzte Woche Daten und nicht bekommen die neuesten Daten, aber wenn ich nicht sortiere, erscheinen die spätesten Daten.

Ich habe diese Abfrage unten verwendet, stellt sich aber heraus, das Ergebnis ist das gleiche.

Activity.find({"user_id" : sesUser._id}).sort("createdAt").exec(function(err,a){ 
    ... 
    }); 

Irgendwelche Hilfe? Ich verwende Mongoose v3

- bearbeitet - Dies ist meine Aktivität Schema/Modell

var mongoose = require('mongoose'); 

var Activity = mongoose.Schema({ 
    sender_id : {type: String, required: true }, 
    user_id : {type: String, required: true }, 
    product_id : {type: String, default : "" }, 
    type : {type: String, required: true }, 
    createdAt : {type: String, default : new Date()} 
}); 

module.exports = mongoose.model('Activity', Activity); 
+1

Können Sie uns Ihr Schema für die Aktivitätstabelle zeigen? –

Antwort

4
`createdAt : {type: Date, default : new Date()}` 

Typ Datum nicht Zeichenfolge Mann

+0

oh ich sehe, so dass Mungo es sortiert hat, weil es String ist und es nicht sortiert, weil es ein Date ist? irgendein Vorschlag? Danke –

+0

, wenn Sie String anstelle von Daten verwenden sort sortiert Daten in alphabetischer Reihenfolge ab c ... so, weil es eine Zeichenfolge ist – kaxi1993

+0

@BagusSantoso Und weil Sie "type: String" verwendet haben, wird mgoose grundsätzlich '.toString()' on aufrufen alle Daten, die Sie vor dem Speichern angeben. Versuchen Sie 'new Date(). ToString()' in jeder REPL und sehen Sie, warum das schlecht ist. –

0

Es wird automatisch die createdAt erstellen und updatedAt

var options={ 
     timestamps: true 
} 

var Activity = mongoose.Schema({ 
    sender_id : {type: String, required: true }, 
    user_id : {type: String, required: true }, 
    product_id : {type: String, default : "" }, 
    type : {type: String, required: true } 

},options);