MongoDB: метод db.collection.mapReduce ()
db.collection.mapReduce
Метод db.collection.mapReduce () используется для выполнения агрегации данных в стиле сокращения карт.
db.collection.mapReduce(
<map>,
<reduce>,
{
out: <collection>,
query: <document>,
sort: <document>,
limit: <number>,
finalize: <function>,
scope: <document>,
jsMode: <boolean>,
verbose: <boolean>
}
)
Синтаксис:
db.collection.mapReduce ()
Параметры:
название | Описание | Необходимые / Необязательный | Тип |
---|---|---|---|
из | Определяет местоположение результата операции уменьшения карты. Вы можете выводить в коллекцию, выводить в коллекцию с помощью действия или выводить inline. Вы можете выводить в коллекцию при выполнении операций сокращения карты на основных членах набора; на вторичных членах вы можете использовать только встроенный вывод. | необходимые | строка или документ |
запрос | Определяет критерии выбора, используя операторы запросов для определения документов, вводимых в функцию карты. | Необязательный | документ |
Сортировать | Сортирует входные документы. Эта опция полезна для оптимизации. Ключ сортировки должен быть в существующем индексе для этой коллекции. | необходимые | документ |
предел | Задает максимальное количество документов для ввода в функцию карты. | необходимые | число |
завершать | Следует за методом снижения и изменяет вывод. | Необязательный | функция |
объем | Определяет глобальные переменные, которые доступны на карте, сокращают и завершают функции. | необходимые | документ |
jsMode | Указывает, следует ли преобразовывать промежуточные данные в формат BSON между выполнением карты и сокращением функций. По умолчанию false.
| необходимые | логический |
подробный | Указывает, следует ли включать информацию о синхронизации в информацию о результате. Подробное значение по умолчанию - true, чтобы включить информацию о времени. | необходимые | логический |
Требования к карте Функция
↑Функция карты отвечает за преобразование каждого входного документа в ноль или более документов. Он может обращаться к переменным, определенным в параметре области, и имеет следующий прототип:
function() {
...
emit(key, value);
}
Функция карты имеет следующие требования:
- В функции карты укажите текущий документ как этот внутри функции.
- Функция карты не должна обращаться к базе данных по любой причине.
- Функция карты должна быть чистой или не иметь влияния вне функции (т.е. побочных эффектов).
- Один emit может содержать только половину максимального размера документа BSON MongoDB.
- Функция карты может дополнительно вызывать emit (ключ, значение) любое количество раз, чтобы создать выходной документ, связывающий ключ со значением.
Требования к функции снижения
Функция Reduce имеет следующий прототип:
function(key, values) {
...
return result;
}
Получить данные о ресторанах здесь
поведения:
Функция приведения демонстрирует следующее поведение:
- Функция сокращения не должна обращаться к базе данных, даже для выполнения операций чтения.
- Функция уменьшения не должна влиять на внешнюю систему.
- MongoDB не будет вызывать функцию сокращения для ключа, который имеет только одно значение. Аргумент values - это массив, элементы которого являются объектами значений, которые сопоставлены с ключом.
- MongoDB может вызывать функцию сокращения более одного раза для одного и того же ключа. В этом случае предыдущий вывод из функции сокращения для этой клавиши станет одним из входных значений для следующего вызова функции уменьшения для этой клавиши.
- Функция Reduce может обращаться к переменным, определенным в параметре области.
- Входные данные для уменьшения не должны превышать половины максимального размера документа BSON MongoDB. Это требование может быть нарушено, когда большие документы возвращаются, а затем объединяются на последующих этапах сокращения.
Поскольку для одного и того же ключа можно вызывать функцию Reduce несколько раз, следующие свойства должны быть истинными:
- тип возвращаемого объекта должен быть идентичен типу значения, испускаемого функцией карты.
- функция приведения должна быть ассоциативной. Следующее утверждение должно быть правдой:
уменьшить (ключ, [C, уменьшить (ключ, [A, B])]) == уменьшить (ключ, [C, A, B])
уменьшить (ключ, [уменьшить (ключ, valuesArray)]) == уменьшить (ключ, valuesArray)
уменьшить (ключ, [A, B]) == уменьшить (ключ, [B, A])
Предыдущая: метод db.collection.isCapped ()
Далее: метод db.collection.reIndex ()
Новый контент: Composer: менеджер зависимостей для PHP , R программирования