我在每个文档中都有我的内部id字段的文档和添加此文档的日期。可能有多个具有相同ID的文档(同一文档的不同版本),但这些文档的日期总是不同的。我想在一些查询中,只带来与指定日期相关的同一文档的所有版本(具有相同的id字段)的一个文档,并且我想用分页显示它们(页面中有50行)。那么,有没有机会在MongoDB中执行此操作(操作 - 通过某些字段查询文档,按id字段对它们进行分组,按日期字段排序,只取第一个,所有这些都应该使用分页。)?
请参阅示例:这些是文档,其中一些是不同的文档,如文档A,B和C,还有一些是相同文档的版本, 像_id:1,2和3都是同一文件的版本A
文件A { _id:1, “id”:“A”, “作者”:“价值”, “日期”:“2015-11-05” }
文件A { _id:2, “id”:“A”, “作者”:“价值”, “日期”:“2015-11-06” }
文件A { _id:3, “id”:“A”, “作者”:“价值”, “日期”:“2015-11-07” }
文件B { _id:4, “id”:“B”, “作者”:“价值”, “日期”:“2015-11-06” }
文件B { _id:5, “id”:“B”, “作者”:“价值”, “日期”:“2015-11-07” }
文件C { _id:6, “id”:“C”, “作者”:“价值”, “日期”:“2015-11-07” }
我想查询“作者”字段中具有“值”的所有文档。 并从这些文件中只带来一份最新日期的文件 指定日期,例如2015-11-08。所以,我希望结果如下: _id:3,_id:5,_id:6 还有分页,例如每页10个文档。
谢谢!!!!!
答案 0 :(得分:0)
_id
。默认情况下,_id
上有唯一索引。_id
字段,其中包含日期: {
"_id":{
docId: yourFormerIdValue,
date: new ISODate()
}
// other fields
}
要使版本在指定日期有效,查询会变得相当简单:
db.yourColl.find({
"_id":{
"docId": idToFind,
// get only the version valid up to a specific date...
"date":{ "$lte": someISODate }
}
})
// ...sort the results descending...
.sort("_id.date":-1)
// ...and get only the first and therefor newest entry
.limit(1)