В этом примере показано, как импортировать большой набор полетных данных из набора 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