首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取最大日期的所有文档?

如何获取最大日期的所有文档?
EN

Stack Overflow用户
提问于 2020-12-22 18:34:17
回答 3查看 236关注 0票数 2

我正在尝试从我的MongoDB中获取日期较高的所有文档。我的数据库是这样的:

代码语言:javascript
复制
_id:"1"
date:"21-12-20"
report:"some stuff"

_id:"2"
date:"11-11-11"
report:"qualcosa"

_id:5fe08735b5a28812866cbc8a
date:"21-12-20"
report:Object

_id:5fe0b35e2f465c2a2bbfc0fd
date:"20-12-20"
report:"ciao"

我希望得到这样的结果:

代码语言:javascript
复制
_id:"1"
date:"21-12-20"
report:"some stuff"

_id:5fe08735b5a28812866cbc8a
date:"21-12-20"
report:Object

我试着运行这个脚本:

代码语言:javascript
复制
db.collection.find({}).sort([("date", -1)]).limit(1)

但它只给了我一个文档。

如何自动获取日期最大的所有文档?

EN

回答 3

Stack Overflow用户

发布于 2020-12-22 18:40:21

试着删除limit(1),它会起作用的

票数 0
EN

Stack Overflow用户

发布于 2020-12-22 18:41:04

如果你添加.limit(1),它只会给你一个文档。

可以将答案用作对另一个.find()的查询,也可以编写聚合查询。如果你的数据集是中等大小的,为了清晰起见,我更喜欢前者。

代码语言:javascript
复制
max_date = list(db.collection.find({}).sort([("date", -1)])).limit(1)
if len(max_date) > 0:
    db.collection.find({'date': max_date[0]['date']})
票数 0
EN

Stack Overflow用户

发布于 2020-12-22 20:03:19

使用聚合管道,如下所示:

代码语言:javascript
复制
db.collection.aggregate([
   { $group: { _id: null, data: { $push: "$$ROOT" } } },
   {
      $set: {
         data: {
            $filter: {
               input: "$data",
               cond: { $eq: [{ $max: "$data.date" }, "$$this.date"] }
            }
         }
      }
   },
   { $unwind: "$data" },
   { $replaceRoot: { newRoot: "$data" } }
])  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65407139

复制
相关文章

相似问题

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