为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 mongo 查询中找到最新记录?

如何在 mongo 查询中找到最新记录?

偶然的你 2022-07-19 20:37:47
假设我的收藏c有这样的记录:{ "_id": ..., "name":"foo", "date": "2020-02-02 ...", "value": 10 ...}我想为每个 找到最新name的(by )记录,并带有肯定的。datevalue就像是def find_latest():    res = {}    for d in c.find({"value":{"$gt":0}}):        key = d["name"]        try:            if d["date"] > res[key]["date"]:                res[key] = d        except KeyError:            res[key] = d    return res但循环应该在服务器端。我怀疑使用聚合应该是可行的,但似乎我需要为此编写 JavaScript ......
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

使用聚合,首先匹配所需的值,然后按日期降序排序,使用 group 为每个名称选择列表中的第一个文档。由于该列表按日期排序,因此这将是最新的。


db.collection.aggregate([

  {"$match":{"value":{"$gt":0}}},

  {"$sort":{"date":-1}},

  {"$group":{"_id":"$name", "document":{"$first":"$$ROOT"}}},

  {"$replaceRoot": {"newRoot": "$document"}} ])

(请注意,如果您索引,这会表现得更好{value:1, date:-1}


查看完整回答
反对 回复 2022-07-19
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信