首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB聚合和分页

MongoDB聚合和分页
EN

Stack Overflow用户
提问于 2015-11-09 02:30:09
回答 1查看 363关注 0票数 1

我在每个文档中都有内部id字段的文档,以及添加此文档时的日期。可能有多个文档具有相同的id (同一文档的不同版本),但这些文档的日期总是不同的。在一些查询中,我希望从同一文档的所有版本(具有相同的id字段)中只带出一个与指定日期相关的文档,并希望通过分页(每页50行)来显示它们。那么,在MongoDB中有没有可能做到这一点(操作-按某个字段查询文档,按id字段分组,按日期字段排序,只取第一个,所有这些都应该通过分页实现)?

请看示例:这些是文档,有些是不同的文档,比如文档A、B和C,还有一些是相同文档的版本,比如_id: 1、2和3都是相同文档A的版本

文档A{ _id : 1,"id“:"A","author”:"value","date“:"2015-11-05”}

文档A{ _id : 2,"id“:"A","author”:"value","date“:"2015-11-06”}

文档A{ _id : 3,"id“:"A","author”:"value","date“:"2015-11-07”}

文档B{ _id : 4,"id“:"B","author”:"value","date“:"2015-11-06”}

文档B{ _id : 5,"id“:"B","author”:"value","date“:"2015-11-07”}

文档C{ _id : 6,"id“:"C","author”:"value","date“:"2015-11-07”}

我想查询所有在“作者”字段中有“值”的文档。并从这些文档中仅带来每个文档中具有指定日期的最新日期的文档,例如2015-11-08。因此,我期望结果是:_id : 3,_id : 5,_id :6,还有分页,例如每页10个文档。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-11-09 03:07:57

  1. 两个文档不能具有相同的_id。默认情况下,在_id上有一个唯一的索引。
  2. 按1。您需要有一个复合的_id字段,其中包含日期:

代码语言:javascript
复制
    {
      "_id":{
        docId: yourFormerIdValue,
        date: new ISODate()
      }
      // other fields
    }

  1. 要获取在指定日期有效的版本,查询变得相当简单:

db.yourColl.find({ "_id":{ "docId":idToFind,//只获取截止日期的版本..."date":{ "$lte":someISODate }) // ...sort结果降序....sort("_id.date":-1) // ...and只获取第一个最新条目.limit(1)

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

https://stackoverflow.com/questions/33597470

复制
相关文章

相似问题

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