Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取MongoDB中的最新文档?_Mongodb - Fatal编程技术网

如何获取MongoDB中的最新文档?

如何获取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

假设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,
    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})