MongoDB: метод db.collection.mapReduce ()

db.collection.mapReduce

Метод db.collection.mapReduce () используется для выполнения агрегирования данных в стиле сокращения карты.

  db.collection.mapReduce (, , {out: , query: , sort: , limit: , finalize: , scope:  , jsMode: , verbose: })  

Синтаксис:

  db.collection.mapReduce () 

Параметры:

Имя Описание Обязательно/
Необязательно
Тип
out Определяет расположение результата операции уменьшения карты. Вы можете выводить в коллекцию, выводить в коллекцию с действием или выводить в строке. Вы можете выводить данные в коллекцию при выполнении операций сокращения карты для основных членов набора; для вторичных членов вы можете использовать только встроенный вывод. Обязательно строка или документ
query Определяет критерии выбора с помощью операторов запроса для определения документов, вводимых в функцию карты. Необязательно document
sort Сортировка входных документов. Эта опция полезна для оптимизации. Ключ сортировки должен быть в существующем индексе для этой коллекции. Обязательный документ
limit Определяет максимальное количество документов для ввода в функцию карты. Обязательно number
finalize Следует методу сокращения и изменяет вывод. Необязательно function
scope Определяет глобальные переменные, которые доступны на карте, функции сокращения и завершения. Обязательный документ
jsMode Указывает, преобразовывать ли промежуточные данные в Формат BSON между выполнением функций map и reduce. По умолчанию false.
    Если false:
  • Внутренне, MongoDB преобразует объекты JavaScript, выдаваемые функцией карты, в объекты BSON. Затем эти объекты BSON преобразуются обратно в объекты JavaScript при вызове функции сокращения.
  • Операция уменьшения карты помещает промежуточные объекты BSON во временное хранилище на диске. Это позволяет выполнять операцию уменьшения карты для произвольно больших наборов данных.
    Если true:
  • Внутри объекты JavaScript, генерируемые во время функции карты, остаются как объекты JavaScript. Нет необходимости преобразовывать объекты для функции сокращения, что может привести к более быстрому выполнению.
  • Вы можете использовать jsMode только для наборов результатов с менее чем 500 000 различных ключевых аргументов в средства отображения emit () функция.

По умолчанию jsMode имеет значение false..

Обязательно boolean
verbose Определяет, будет ли для включения информации о времени в информацию о результате. По умолчанию для параметра verbose установлено значение true, чтобы включить информацию о времени. Обязательно boolean

Требования к функции карты

Функция карты отвечает за преобразование каждого входного документа в ноль или более документов. Он может обращаться к переменным, определенным в параметре области, и имеет следующий прототип:

  function () {... emit (key, value);}   

Функция карты имеет следующие требования:

  • Ссылка на текущий документ внутри функции в функции карты.
  • Функция карты не должна обращаться к базе данных по какой-либо причине.
  • Функция карты должна быть чистой или не оказывать никакого влияния вне функции (т.е. побочные эффекты).
  • Один emit может содержать только половину максимального размера документа BSON MongoDB.
  • Функция карты может дополнительно вызывать emit (key, value) любое количество раз для создания выходного документа связывание ключа со значением.

Требования к функции reduce

Функция reduce имеет следующий прототип:

  function (key, values) {... return result;}  

Получить отсюда данные о ресторанах

Поведение:

Уменьшение Функция e демонстрирует следующее поведение:

  • Функция сокращения не должна обращаться к базе данных даже для выполнения операций чтения.
  • Функция уменьшения не должна влияют на внешнюю систему.
  • MongoDB не будет вызывать функцию сокращения для ключа, который имеет только одно значение. Аргумент значений — это массив, элементы которого являются объектами значений, сопоставленными с ключом.
  • MongoDB может вызывать функцию сокращения более одного раза для одного и того же ключа. В этом случае предыдущий вывод функции сокращения для этого ключа станет одним из входных значений для следующего вызова функции сокращения для этого ключа.
  • Функция сокращения может получить доступ к переменным, определенным в параметр scope.
  • Входные данные для уменьшения не должны превышать половину максимального размера документа BSON MongoDB. Это требование может быть нарушено, если большие документы возвращаются, а затем объединяются вместе на последующих этапах сокращения.

Поскольку функцию сокращения можно вызывать более одного раза для одного и того же ключа, следующие свойства должны быть истинными:

  • тип возвращаемого объекта должен быть идентичен типу значения, испускаемого функцией карты.
  • функция уменьшения должна быть ассоциативной. Следующее утверждение должно быть истинным:
 reduce (key, [C, reduce (key, [A, B])]]) == reduce (key, [C, A,  B]) 
  • функция сокращения должна быть идемпотентной. Убедитесь, что следующее утверждение верно:
  •  reduce (key, [reduce (key, valuesArray)]) == reduce (key, valuesArray) 
  • функция уменьшения должен быть коммутативным: то есть порядок элементов в valuesArray не должен влиять на вывод функции reduce, так что верно следующее утверждение:
  •  reduce (key, [A, B  ]) == reduce (ключ, [B, A]) 

    Оцените статью
    nanomode.ru
    Добавить комментарий