Пусть есть набор со следующими документами:Как я могу получить самые последние документы в MongoDB?
{
_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'}
документы в «одной операции»? В этом случае документы с _id
1
и 2
.
Я не знаю, сколько элементов, так что я не могу сделать:
db.coll.find({data: 'foo', createdAt: ???})
или:
db.coll.find({data: 'foo'}).sort({createdAt: -1}).limit(???);
Единственным способом я знаю, что есть два шага:
var d = db.coll.find({data: 'foo'}).sort({createdAt: -1}).next();
var c = db.coll.find({data: 'foo', createdAt: d.createdAt});
Есть ли способ сделать это за один шаг?
Связанный вопрос: [1].
В таком формате даты, я действительно сомневаюсь, что это сработает. Будут делать некоторые исследования. –
Конечно. Что вам не нравится? Группа будет работать до тех пор, пока элементы будут считаться равными. Сортировка будет зависеть от того, сохранена ли она как метка времени или строка. Я предполагаю, что это временная метка, поскольку нет кавычек, и он уже показывает способность сортировать в своем примере. – Verran