我正在为我的一个项目测试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中实现这一点。任何人都可以帮忙吗?
答案 0 :(得分:1)
使用push它总是在列表末尾添加元素并找到可以使用的列表的最新元素:
db.collection.find( { field: value }, { array: {$slice: count } } );
e.g db.collection.find({},{arr:{$slice:-1}})
答案 1 :(得分: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 }});