如何获取MongoDB中的最新文档?
假设a有一个包含以下文档的集合:如何获取MongoDB中的最新文档?,mongodb,Mongodb,假设a有一个包含以下文档的集合: { _id: 0, data: 'foo', createdAt: Tue Sep 30 2014 17:00:00 GMT-0300 (BRT) } { _id: 1, data: 'foo', createdAt: Tue Sep 30 2014 18:00:00 GMT-0300 (BRT) } { _id: 2, da
{
_id: 0,
data: 'foo',
createdAt: Tue Sep 30 2014 17:00:00 GMT-0300 (BRT)
}
{
_id: 1,
data: 'foo',
createdAt: Tue Sep 30 2014 18:00:00 GMT-0300 (BRT)
}
{
_id: 2,
data: 'foo',
createdAt: Tue Sep 30 2014 18:00:00 GMT-0300 (BRT)
}
{
_id: 3,
data: 'bar',
createdAt: Tue Sep 30 2014 18:00:00 GMT-0300 (BRT)
}
如何在“一次操作”中获取所有最新的{data:'foo'}
文档?在这种情况下,具有\u id
1
和2
的文档
我不知道有多少元素,所以我不能:
db.coll.find({data: 'foo', createdAt: ???})
或:
我知道的唯一方法有两个步骤:
var d = db.coll.find({data: 'foo'}).sort({createdAt: -1}).next();
var c = db.coll.find({data: 'foo', createdAt: d.createdAt});
有一种方法可以一步完成吗
相关问题:。假设您只关心ID和时间,而不需要查看每个返回文档的整个文档,您可以使用 下面是一个未经测试的示例,它将返回最新的时间戳以及与之相关的所有_id值
db.coll.aggregate({$match: {data: 'foo'}}, {$group: {_id: '$created_at', id: {$addToSet: '$_id'}}}, {$sort: {_id: -1}}, {$limit: 1})
对于这样的日期格式,我真的怀疑这是否有效。我会做一些研究的,当然会的。你不喜欢它的什么地方?只要元素被视为相等,团队就会工作。排序将取决于其存储为时间戳还是字符串。我假设这是一个时间戳,因为没有引号,他已经在他的示例中展示了排序的能力。
db.coll.aggregate({$match: {data: 'foo'}}, {$group: {_id: '$created_at', id: {$addToSet: '$_id'}}}, {$sort: {_id: -1}}, {$limit: 1})