0

我正在为我的一个项目测试 mongodb。

基本上我想输入一些学生的考试成绩。所以使用 mongodb,我从

db.grades.insert( {_id: 1024} );    // this references the student's SSN
db.grades.update( {_id: 1024}, { $push: { SemesterAssessment: 43 }} );    //insert student grades
db.grades.update( {_id: 1024}, { $push: { SemesterAssessment: 50 }} );  // teacher allows retaking

Output
{"SemesterAssessment : [43, 50], "_id": 1024};

我想在 SemesterAssessment 中添加一个标志,以指示哪个等级反映了最新的测试结果。

我正在寻找以下示例输出:

Sample output
{"SemesterAssessment : [43, [latest: 50]], "_id": 1024}

这包括称为“最新”的密钥。但我不确定如何在 mongodb 中实现这一点。任何人都可以帮忙吗?

4

2 回答 2

1

使用 push 它总是在列表的末尾添加元素并找到可以使用的列表的最新元素:

db.collection.find( { field: value }, { array: {$slice: count } } );
e.g    db.collection.find({},{arr:{$slice:-1}})
于 2013-09-17T17:59:40.487 回答
0
{"SemesterAssessment" : [43, ["latest": 50]], "_id": 1024}

不是有效的json,你需要这样的东西:

({"SemesterAssessment" : [43, 50], "latest": 50}, "_id": 1024}

然后你的代码变成这样:

db.grades.insert( {_id: 1024} );
db.grades.update( {_id: 1024}, { $push: { SemesterAssessment: 43 }, 
    $set: { latest: 43 }});
db.grades.update( {_id: 1024}, { $push: { SemesterAssessment: 50 }, 
    $set: { latest: 50 }});
于 2013-09-17T18:16:45.560 回答