我在每个文档中都有内部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个文档。
谢谢!
发布于 2015-11-09 03:07:57
_id。默认情况下,在_id上有一个唯一的索引。_id字段,其中包含日期: {
"_id":{
docId: yourFormerIdValue,
date: new ISODate()
}
// other fields
}db.yourColl.find({ "_id":{ "docId":idToFind,//只获取截止日期的版本..."date":{ "$lte":someISODate }) // ...sort结果降序....sort("_id.date":-1) // ...and只获取第一个最新条目.limit(1)
https://stackoverflow.com/questions/33597470
复制相似问题