Оператор этапов агрегации MongoDB - $ match
Описание
Оператор MongoDB $ match фильтрует документы, чтобы передать только те документы, которые соответствуют указанным условиям, на следующую стадию конвейера.
Синтаксис:
{$ match: {<query>}}
Нужно помнить:
- Это очень эффективно, если вы поместите $ match как можно раньше в конвейер агрегации, который ограничивает общее количество документов в конвейере агрегации.
- Когда $ match размещается в самом начале конвейера, запрос может использовать индексы.
- $ Where нельзя использовать в запросах $ match как часть конвейера агрегации.
Коллекция образцов empdetails
{
"_id" : ObjectId("5541ffb465713ddc838b2dc7"),
"emp_code" : "E005",
"emp_name" : "Alan Hogg",
"date_of_join" : "15/09/2013",
"salary" : 9000,
"deduction" : {
"pf" : 2000,
"pt" : 300,
"it" : 200
}
}
{
"_id" : ObjectId("5542003c65713ddc838b2dc8"),
"emp_code" : "E006",
"emp_name" : "Karlos Mint",
"date_of_join" : "23/05/2010",
"salary" : 12000,
"deduction" : {
"pf" : 3000,
"pt" : 300,
"it" : 400
}
}
{
"_id" : ObjectId("554200a065713ddc838b2dc9"),
"emp_code" : "E007",
"emp_name" : "Burg Hence",
"date_of_join" : "27/08/2011",
"salary" : 10000,
"deduction" : 4000
}
Пример: $ match - to Equality Match
Следующая команда выбирает документы, в которых поле зарплаты равно 9000.
> db.empdetails.aggregate(
... [ { $match : { salary : 9000 } } ]
... ).pretty();
Выход :
{ "_id": ObjectId ("5541ffb465713ddc838b2dc7"), "emp_code": "E005", "emp_name": "Алан Хогг", "date_of_join": "15/09/2013", «зарплата»: 9000, "дедукция": { "pf": 2000, «pt»: 300, "это": 200 } }
Пример: $ match с $ count
В следующем конвейере агрегации $ match выбираются документы, зарплата которых больше 9000 и меньше или равна 12000. Затем отправляет результат для группировки с оператором конвейера $ group для выполнения подсчета.
db.empdetails.aggregate( [
{ $match : { salary : { $gt : 9000, $lte : 12000 } } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );
Outputp:
{"_id": null, "count": 2}
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code