Estoy tratando de usar MongoDB con MATLAB. Aunque no hay supported driver para MATLAB, hay uno para Java. Afortunadamente, pude usarlo para conectarme a db, etc. I downloaded la versión más reciente (2.1) del archivo jar e instalarlo con JAVAADDPATH. Entonces traté de seguir el Java tutorial.Conectando a MongoDB desde MATLAB
Este es el código
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);
Aquí es donde Apilé. coll
se supone que es DBCollection
objeto, pero en realidad es objeto de la clase com.mongodb.DBApiLayer$MyCollection
. Entonces el último comando devuelve el error:
??? Ningún método 'insert' con la coincidencia de la firma encontrada para la clase 'com.mongodb.DBApiLayer $ MyCollection'.
En el tutorial de la variable coll
se crea explícitamente como objeto DBCollection:
DBCollection coll = db.getCollection("testCollection")
¿Estoy haciendo algo mal en MATLAB? ¿Algunas ideas?
Otra pregunta menor acerca de la variable colls
. Es la clase com.mongodb.util.OrderedSet
y contiene la lista de nombres de todas las colecciones en el db. ¿Cómo podría convertirlo a la matriz de células de MATLAB?
actualización: Además de Amro's answer esto funciona así:
wc = com.mongodb.WriteConcern();
coll.insert(doc,wc)
+1. El método espera una matriz (o más bien una vararg). Desde Java5, ahora hay varargs, por lo que desde Java puede llamarlo directamente con DBObject. ¿Esto significa que no se admiten varargs en los enlaces Java de MATLAB? – Thilo
Como recuerdo, los varargs de Java son simplemente azúcar sintáctico para la construcción de matriz – Amro
Respuesta muy útil. Muchas gracias. No tengo tanta experiencia con Java en MATLAB, pero estoy aprendiendo. – yuk