在我的mongo数据库中,我基本上有两个集合:
是否有一种使用mongoshell的方法可以获得每个学生的最后一个分数,而不必手动遍历学生列表并为每个学生获得最后的分数?
目前,我对每一名学生进行了一次循环,并执行了:
db.marks.find({pupilID: pupilID}).sort({_id: -1}).limit(1)但是我很担心如果标记收藏中含有大量的物品的话。
发布于 2014-06-16 09:45:03
在这里,你的约会不是最好的例子,因为它们是字符串。您应该将它们转换为正确的“日期”类型,但至少它们是用于排序的词法。
不是你似乎在隐式寻找的“联接”,但你可以从你的“分数”集合中得到每个学生的$last标记,这可能会对你的结果有所帮助:
db.marks.aggregate([
{ "$sort": { "date": 1 } },
{ "$group": {
"_id": "$pupilID",
"date": { "$last": "$date" },
"value": { "$last": "$value" }
}}
]}这将按日期给出每个"pupilID“的最后一个标记”值“。数据的连接取决于您,但这比循环整个集合或以其他方式启动每个“瞳孔”查询要好。
https://stackoverflow.com/questions/24240463
复制相似问题