开发者

Connecting to MongoDB from MATLAB

I'm trying to use MongoDB with MATLAB. Although there is no supported driver for MATLAB, there is one for Java. Fortunately I was able to use it to connect to db, etc. I downloaded the latest (2.1) version of jar-file and install it with JAVAADDPATH. Then I tried to follow the Java tutorial.

Here is the code

javaaddpa开发者_运维技巧th('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);

Here is where I stacked. coll supposed to be DBCollection object, but actually is object of com.mongodb.DBApiLayer$MyCollection class. So the last command returns the error:

??? No method 'insert' with matching signature found for class 'com.mongodb.DBApiLayer$MyCollection'.

In the tutorial the coll variable is created explicitly as DBCollection object:

DBCollection coll = db.getCollection("testCollection")

Am I doing something wrong in MATLAB? Any ideas?

Another minor question about colls variable. It's com.mongodb.util.OrderedSet class and contains list of names of all collections in the db. How could I convert it to MATLAB's cell array?


Update: In addition to Amro's answer this works as well:

wc = com.mongodb.WriteConcern();
coll.insert(doc,wc)


A quick check:

methodsview(coll)        %# or: methods(coll, '-full')

shows that it expects an array:

com.mongodb.WriteResult  insert(com.mongodb.DBObject[])

Try this instead:

doc(1) = BasicDBObject();
doc(1).put('name', 'MongoDB');
doc(1).put('type', 'database');
...
coll.insert(doc);

Note: If you are using Java in MATLAB, I suggest you use the CheckClass and UIInspect utilities by Yair Altman


There is now a driver built expressly to connect MongoDB and Matlab. It is built on top of the mongo-c-driver. Source can be found on github:

https://github.com/gerald-lindsly/mongo-matlab-driver


For the minor question about converting the list of collections use the toArray() method.

>> cList=cell(colls.toArray())

cList = 
  'foo'
  'system.indexes'
  'things'
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜