В этом примере показано, как импортировать большой набор полетных данных из MongoDB® набор в MATLAB® рабочая область с использованием интерфейса Database Toolbox™ для MongoDB. Чтобы избежать неполадок с Java® при извлечении многих документов используйте цикл для импорта больших данных пакетами.
Чтобы запустить этот пример, необходимо сначала установить интерфейс Database Toolbox для MongoDB. Для получения дополнительной информации смотрите Интерфейс Database Toolbox для установки 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
close(conn)
close
| count
| find
| isopen
| mongo
| while