В этом примере показано, как импортировать большой набор данных полета из коллекции MongoDB ® в рабочее пространство MATLAB ® с помощью интерфейса Database Toolbox™ для MongoDB. Чтобы избежать проблем с памятью при извлечении большого количества документов с помощью кучи Java ®, используйте цикл для импорта больших объемов данных пакетами.
Для запуска этого примера необходимо сначала установить интерфейс 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: 23485919conn является 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 flightdataName Size Bytes Class Attributes flightdata 75603x1 285102752 struct
close(conn)
close | count | find | isopen | mongo | while