кодесурса
«MongoDB

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

script1adsense2code
script1adsense3code

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.
    Если ложно:
  • Внутри MongoDB преобразует объекты JavaScript, испускаемые функцией map, в объекты BSON. Эти объекты BSON затем преобразуются обратно в объекты JavaScript при вызове функции Reduce.
  • Операция map-less помещает промежуточные объекты BSON во временное хранилище на диске. Это позволяет выполнять операцию уменьшения карты для произвольно больших наборов данных.
    Если правда:
  • Внутренне объекты JavaScript, испускаемые во время функции карты, остаются объектами JavaScript. Нет необходимости конвертировать объекты для функции Reduce, что может привести к более быстрому выполнению.
  • Вы можете использовать jsMode только для наборов результатов с менее чем 500 000 различных ключевых аргументов функции mappers emit ().
JSMode по умолчанию имеет значение 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) 
  • Функция Reduce должна быть коммутативной: то есть порядок элементов в массиве valuesArray не должен влиять на выходные данные функции Reduce, так что верно следующее утверждение:
  •  уменьшить (ключ, [A, B]) == уменьшить (ключ, [B, A]) 

Предыдущая: метод db.collection.isCapped ()
Далее: метод db.collection.reIndex ()

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


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code