кодесурса
«MongoDB

Оператор этапов агрегации MongoDB - $ match

script1adsense2code
script1adsense3code

Описание

Оператор 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}

Предыдущая: $ проект
Далее: $ redact

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code