我正在尝试将MongoDB与MATLAB 一起使用.虽然MATLAB 没有支持的驱动程序,但有一个用于Java.幸运的是,我能够使用它连接到db等.我下载了最新的(2.1)版本的jar文件并使用JAVAADDPATH安装它.然后我尝试按照Java教程.
这是代码
javaaddpath('c:\MATLAB\myJavaClasses\mongo-2.1.jar') import com.mongodb.Mongo; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import com.mongodb.DBCursor; m = Mongo(); % connect to local db db = m.getDB('test'); % get db object colls = db.getCollectionNames(); % get collection names coll = db.getCollection('things'); % get DBCollection object doc = BasicDBObject(); doc.put('name', 'MongoDB'); doc.put('type', 'database'); doc.put('count', 1); info = BasicDBObject(); info.put('x', 203); info.put('y', 102); doc.put('info', info); coll.insert(doc);
这是我堆积的地方.coll
应该是DBCollection
对象,但实际上是com.mongodb.DBApiLayer$MyCollection
类的对象.所以最后一个命令返回错误:
??? 没有为类'com.mongodb.DBApiLayer $ MyCollection'找到匹配签名的方法'insert'.
在本教程中,coll
变量显式创建为DBCollection对象:
DBCollection coll = db.getCollection("testCollection")
我在MATLAB中做错了什么?有任何想法吗?
关于colls
变量的另一个小问题.它是com.mongodb.util.OrderedSet
类,包含db中所有集合的名称列表.我怎么能把它转换成MATLAB的单元格数组?
更新:除了Amro的答案,这也有效:
wc = com.mongodb.WriteConcern(); coll.insert(doc,wc)
Amro.. 10
快速检查:
methodsview(coll) %# or: methods(coll, '-full')
表明它需要一个数组:
com.mongodb.WriteResult insert(com.mongodb.DBObject[])
试试这个:
doc(1) = BasicDBObject(); doc(1).put('name', 'MongoDB'); doc(1).put('type', 'database'); ... coll.insert(doc);
注意:如果您在MATLAB中使用Java,我建议您使用Yair Altman的CheckClass和UIInspect实用程序
快速检查:
methodsview(coll) %# or: methods(coll, '-full')
表明它需要一个数组:
com.mongodb.WriteResult insert(com.mongodb.DBObject[])
试试这个:
doc(1) = BasicDBObject(); doc(1).put('name', 'MongoDB'); doc(1).put('type', 'database'); ... coll.insert(doc);
注意:如果您在MATLAB中使用Java,我建议您使用Yair Altman的CheckClass和UIInspect实用程序