Импорт больших данных из MongoDB

В этом примере показано, как импортировать большой набор полетных данных из MongoDB® набор в MATLAB® рабочая область с использованием интерфейса Database Toolbox™ для MongoDB. Чтобы избежать неполадок с Java® при извлечении многих документов используйте цикл для импорта больших данных пакетами.

Чтобы запустить этот пример, необходимо сначала установить интерфейс Database Toolbox для MongoDB. Для получения дополнительной информации смотрите Интерфейс Database Toolbox для установки MongoDB.

Подключение к MongoDB

Создайте соединение MongoDB с базой данных mongotest. Здесь сервер базы данных dbtb01 размещает эту базу данных с использованием номера порта 27017.

server = "dbtb01";
port = 27017;
dbname = "mongotest";
conn = mongo(server,port,dbname)
conn = 

  mongo with properties:

               Database: 'mongotest'
               UserName: ''
                 Server: {'dbtb01'}
                   Port: 27017
        CollectionNames: {'airlinesmall', 'employee', 'largedata' ... and 3 more}
         TotalDocuments: 23485919

conn является mongo объект, содержащий соединение MongoDB. Свойства объекта содержат информацию о подключении и базе данных.

  • Имя базы данных mongotest.

  • Имя пользователя пусто.

  • Сервер базы данных dbtb01.

  • Номер порта 27017.

  • Эта база данных содержит шесть наборов документов. Первые три имени набора airlinesmall, employee, и largedata.

  • Эта база данных содержит 23 485 919 документов.

Проверьте подключение MongoDB.

isopen(conn)
ans =

  logical

   1

Подключение к базе данных успешно, поскольку isopen функция возвращает 1. В противном случае соединение с базой данных закроется.

Определите количество документов для импорта

Найти общее количество документов totaldocs в airlinesmall набор за 1997-2010 годы. Используйте запрос MongoDB, чтобы фильтровать данные о рейсе за указанные годы.

collection = "airlinesmall";
mongoquery = '{"Year":{$gte:1997,$lte:2010}}';
totaldocs = count(conn,collection,'Query',mongoquery);

Получение больших данных в пакетах

Оцените размер пакета в 15 000 документов. Задайте переменное Рабочее пространство MATLAB для хранения извлеченных данных.

batchsize = 15000;
flightdata = [];

Размер пакета можно изменить в зависимости от эффективности и объема памяти системы.

Использование while цикл для извлечения данных о рейсе из набора. Переменная flightdata накапливает каждый пакет извлеченных данных.

% Track number of documents read
index = 0;

while index < totaldocs
    
    % Retrieve documents in a batch
    localdata = find(conn,collection,'Query',mongoquery, ...
        'Skip',index,'Limit',batchsize);
    
    % Store retrieved documents locally
    flightdata = [flightdata; localdata];
    
    % Move to the next batch
    index = index + batchsize;
    
end

Отображение информации о flightdata переменная. Извлеченные данные являются массивом структур, который содержит 75 603 структуры. Каждая структура содержит 30 полей полетных данных.

whos flightdata
  Name                Size                Bytes  Class     Attributes

  flightdata      75603x1             285102752  struct  

Закройте соединение MongoDB

close(conn)

См. также

| | | | |

Похожие темы

Внешние веб-сайты