У меня есть коллекция в следующем формате:
{
"_id": 123,
"items": [{
"status" : "inactive",
"created" : ISODate("2016-03-16T10:39:28.321Z")
},
{
"status" : "active",
"created" : ISODate("2016-03-16T10:39:28.321Z")
},
{
"status" : "active",
"created" : ISODate("2016-03-16T10:39:28.321Z")
}
],
"status" : "active"
}
Я хочу, чтобы запрос на статусе поля элементов таким образом, что объект со статусом, как «активный» возвращается только в массиве и также в запросе возвращаются только последние 2.
В настоящее время я использую $ фильтр для этой операции, но я не в состоянии использовать $ ломтик вместе с $ фильтром (который я думаю, что нужно для того, что я хочу). Ниже показано, как мой запрос выглядит прямо сейчас:
db.collection('collection').aggregate([
{$match: {'status': 'active'}},
{
$project: {
'items': {
$filter: {
input: '$items',
as: 'item',
cond: {$eq: ['$$item.status', 'active']
}
}
}
}]);
Что я получаю сейчас правильный результат, его только, что он возвращает все объекты в пунктах поля, и я просто хочу, последние 2 объекта.
Awesome! Благодаря ;) – HVT7