2013-07-22 4 views
0

J'essaie d'obtenir des informations sur le nombre de tentatives d'un utilisateur pour résoudre un problème particulier en tant que JSON à partir d'une base de données mongodb. S'il y a plusieurs tentatives sur le même problème, je voudrais seulement sortir la dernière entrée - par exemple, en ce moment, si je fais un db.profictioncies.find() - je vais retirer les entrées A, B, C, et D mais je voudrais seulement sortir les entrées B et D (dernières entrées pour les problèmes de labyrinthe et cercle respectivement).Extraction des dernières entrées (multiples) de MongoDB

Existe-t-il un moyen facile de le faire?

Entry A 
{ 
    "problem": "maze", 
    "courseLesson": "elementary_one, 1", 
    "studentId": "51ed51d0fcb4cc3696000001", 
    "studentName": "Sarah", 
    "_id": "51ed51defcb4cc3696000011", 
    "__v": 0, 
    "date": "2013-07-22T15:38:06.259Z", 
    "numberOfAttemptsBeforeSolved": 1 
    } 

Entry B 
{ 
    "problem": "maze", 
    "courseLesson": "elementary_one, 1", 
    "studentId": "51ed51d0fcb4cc3696000001", 
    "studentName": "Sarah", 
    "_id": "51ed51defcb4cc3696000011", 
    "__v": 0, 
    "date": "2013-07-27T15:38:06.259Z", 
    "numberOfAttemptsBeforeSolved": 1 
    } 

Entry C 
{ 
    "problem": "circle", 
    "courseLesson": "elementary_one, 1", 
    "studentId": "51ed51d0fcb4cc3696000001", 
    "studentName": "Sarah", 
    "_id": "51ed51defcb4cc3696000011", 
    "__v": 0, 
    "date": "2013-07-22T15:38:06.259Z", 
    "numberOfAttemptsBeforeSolved": 2 
    } 

Entry D 
{ 
    "problem": "circle", 
    "courseLesson": "elementary_one, 1", 
    "studentId": "51ed51d0fcb4cc3696000001", 
    "studentName": "Sarah", 
    "_id": "51ed51defcb4cc3696000011", 
    "__v": 0, 
    "date": "2013-07-27T15:38:06.259Z", 
    "numberOfAttemptsBeforeSolved": 4 
    } 


var ProficiencySchema = new Schema({ 

    problem: String 
    , numberOfAttemptsBeforeSolved: {type: Number, default: 0} 
    //refers to which lesson, e.g. elementary_one, 2 refers to lesson 2 of elementary_one 
    , courseLesson: String 
    , date: {type: Date, default: Date.now} 
    , studentId: Schema.Types.ObjectId 
    , studentName: String 
}) 

Répondre

3

La meilleure façon de le faire serait de trier les résultats par ordre décroissant date-heure (donc la dernière réponse est d'abord), puis de limiter le résultat fixé par celui-ci. Cela ressemblerait à quelque chose comme:

db.proficiencies.find(YOUR QUERY).sort({'date': -1}).limit(1) 
Questions connexes