exponenta event banner

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

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

Для запуска этого примера необходимо сначала установить интерфейс Database Toolbox для MongoDB. Дополнительные сведения см. в разделе Интерфейс панели инструментов базы данных для установки 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)

См. также

| | | | |

Связанные темы

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