我正在尝试将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);
Run Code Online (Sandbox Code Playgroud)
这是我堆积的地方.coll应该是DBCollection对象,但实际上是com.mongodb.DBApiLayer$MyCollection类的对象.所以最后一个命令返回错误:
??? 没有为类'com.mongodb.DBApiLayer $ MyCollection'找到匹配签名的方法'insert'.
在本教程中,coll变量显式创建为DBCollection对象:
DBCollection coll = db.getCollection("testCollection")
Run Code Online (Sandbox Code Playgroud)
我在MATLAB中做错了什么?有任何想法吗?
关于colls变量的另一个小问题.它是com.mongodb.util.OrderedSet类,包含db中所有集合的名称列表.我怎么能把它转换成MATLAB的单元格数组?
更新:除了Amro的答案,这也有效:
wc = com.mongodb.WriteConcern();
coll.insert(doc,wc)
Run Code Online (Sandbox Code Playgroud)
Amr*_*mro 10
快速检查:
methodsview(coll) %# or: methods(coll, '-full')
Run Code Online (Sandbox Code Playgroud)
表明它需要一个数组:
com.mongodb.WriteResult insert(com.mongodb.DBObject[])
Run Code Online (Sandbox Code Playgroud)
试试这个:
doc(1) = BasicDBObject();
doc(1).put('name', 'MongoDB');
doc(1).put('type', 'database');
...
coll.insert(doc);
Run Code Online (Sandbox Code Playgroud)
注意:如果您在MATLAB中使用Java,我建议您使用Yair Altman的CheckClass和UIInspect实用程序
| 归档时间: |
|
| 查看次数: |
7515 次 |
| 最近记录: |