这个例子展示了如何从MongoDB导入大量的飞行数据®集合到MATLAB中®工作区使用MongoDB的Database Toolbox™接口。避免Java的内存不足问题®堆检索许多文档时,使用循环批量导入大数据。
要运行这个示例,您必须首先为MongoDB安装数据库工具箱接口。有关详细信息,请参见安装MongoDB的数据库工具箱接口.
创建到数据库的MongoDB连接mongotest
.这里是数据库服务器dbtb01
使用端口号托管该数据库27017
.
服务器=“dbtb01”;端口= 27017;dbname =“mongotest”;康涅狄格州= mongo(服务器、端口dbname)
conn = mongo with properties: Database: 'mongotest' UserName: " Server: {'dbtb01'} Port: 27017 CollectionNames: {' airlinesal ', 'employee', 'largedata'…and 3 more} TotalDocuments: 23485919
康涅狄格州
是蒙戈
包含MongoDB连接的对象。对象属性包含有关连接和数据库的信息。
数据库名称为mongotest
.
用户名为空。
数据库服务器为dbtb01
.
端口号为27017
.
这个数据库包含六个文档集合。前三个集合名是airlinesmall
,员工
,largedata
.
这个数据库包含23,485,919个文档。
检查MongoDB连接。
isopen(康涅狄格州)
逻辑1
数据库连接成功,因为isopen
函数返回1
.否则,数据库连接将关闭。
找到文档的总数totaldocs
在airlinesmall
1997年到2010年的收藏。使用MongoDB查询过滤指定年份的航班数据。
收集=“airlinesmall”;mongoquery =”{"年":{gte: 1997美元,美元lte: 2010}}”;totaldocs = count(康涅狄格州、收集、“查询”, mongoquery);
估计批大小为15,000个文档。定义用于存储检索数据的MATLAB工作区变量。
batchsize = 15000;flightdata = [];
您可以根据系统的性能和内存容量更改批大小。
使用一个而
循环从集合中检索飞行数据。的变量flightdata
累积每批检索的数据。
%跟踪读取的文档数指数= 0;而指数< totaldocs批量检索文档localdata =找到(康涅狄格州、收集、“查询”mongoquery,...“跳过”、索引“限制”, batchsize);在本地存储检索到的文档flightdata = [flightdata;localdata];%移动到下一批Index = Index + batchsize;结束
显示flightdata
变量。检索到的数据是一个包含75,603个结构的结构数组。每个结构包含30个飞行数据字段。
谁flightdata
名称大小字节类属性flightdata 75603x1 285102752 struct
关上(康涅狄格州)