Импортируйте большие данные от 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)

Смотрите также

| | | | |

Похожие темы

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