首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用芒果一次获得几个项目的最后记录

用芒果一次获得几个项目的最后记录
EN

Stack Overflow用户
提问于 2014-06-16 09:27:37
回答 1查看 34关注 0票数 0

在我的mongo数据库中,我基本上有两个集合:

  • 小学生 {_id: ObjectID(539 Ab7ffefbb93120c9697f7),名:'Arnold',姓氏:'Smith'} {_id: ObjectID(539ab7ffefbb93120c5473c3),名:'Steven',姓氏:'Jens'}
  • 标记{日期:'2014-06-12',值: 12,pupilID: 539 ab7ffefbb93120c9697f7}{日期:'2014-06-05',值: 9,pupilID: 539ab7ffefbb93120c9697f7} {日期:'2014-05-10',值: 17,pupilID: 539 ab7ffefbb93120c9697f7}{ date:'2014-05-10',值: 7,pupilID: 539 ab7ffefbb93120c5473c3}

是否有一种使用mongoshell的方法可以获得每个学生的最后一个分数,而不必手动遍历学生列表并为每个学生获得最后的分数?

目前,我对每一名学生进行了一次循环,并执行了:

代码语言:javascript
复制
db.marks.find({pupilID: pupilID}).sort({_id: -1}).limit(1)

但是我很担心如果标记收藏中含有大量的物品的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-16 09:45:03

在这里,你的约会不是最好的例子,因为它们是字符串。您应该将它们转换为正确的“日期”类型,但至少它们是用于排序的词法。

不是你似乎在隐式寻找的“联接”,但你可以从你的“分数”集合中得到每个学生的$last标记,这可能会对你的结果有所帮助:

代码语言:javascript
复制
db.marks.aggregate([
    { "$sort": { "date": 1 } },
    { "$group": {
        "_id": "$pupilID",
        "date": { "$last": "$date" },
        "value": { "$last": "$value" }
    }}
]}

这将按日期给出每个"pupilID“的最后一个标记”值“。数据的连接取决于您,但这比循环整个集合或以其他方式启动每个“瞳孔”查询要好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24240463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档