0

我正在尝试从 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
})
4

1 回答 1

3

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

db.proficiencies.find(YOUR QUERY).sort({'date': -1}).limit(1)
于 2013-09-16T15:26:57.563 回答