从MongoDB中提取最新(多个)条目

时间:2013-07-22 16:38:46

标签: mongodb

我正在尝试检索用户尝试从mongodb数据库中作为JSON解决特定问题的尝试次数。如果对同一个问题有多次尝试,我只想提取最后一个条目 - 例如,现在,如果我执行db.proficiencies.find() - 我将提取条目A,B,C,和D但我想只提出条目B和D(问题迷宫和圈子的最新条目)。

有一种简单的方法吗?

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
})

1 个答案:

答案 0 :(得分:3)

执行此操作的最佳方法是按降序日期时间顺序对结果进行排序(因此最新响应为第一个),然后将结果集限制为1。这看起来像是:

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