Sto provando a utilizzare MongoDB con MATLAB. Sebbene non ci sia supported driver per MATLAB, ce n'è uno per Java. Fortunatamente sono stato in grado di usarlo per connettermi a db, ecc. I downloaded l'ultima versione (2.1) di jar-file e installarlo con JAVAADDPATH. Quindi ho provato a seguire lo Java tutorial.Connessione a MongoDB da MATLAB
Ecco il codice
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);
Qui è dove ho impilati. coll
dovrebbe essere l'oggetto DBCollection
, ma in realtà è l'oggetto della classe com.mongodb.DBApiLayer$MyCollection
. Quindi l'ultimo comando restituisce l'errore:
??? Nessun metodo 'inserisci' con la firma corrispondente trovata per la classe 'com.mongodb.DBApiLayer $ MyCollection'.
Nel tutorial la variabile coll
si crea esplicitamente come oggetto DBCollection:
DBCollection coll = db.getCollection("testCollection")
sto facendo qualcosa di sbagliato in MATLAB? Qualche idea?
Un'altra piccola domanda relativa alla variabile colls
. È la classe com.mongodb.util.OrderedSet
e contiene l'elenco dei nomi di tutte le raccolte nel db. Come posso convertirlo nell'array di celle MATLAB?
Aggiornamento: Oltre a Amro's answer questo funziona così:
wc = com.mongodb.WriteConcern();
coll.insert(doc,wc)
+1. Il metodo si aspetta un array (o piuttosto un vararg). Dal momento che Java5 ora ci sono vararg, quindi da Java puoi chiamarlo direttamente con DBObject. Questo significa che i vararg non sono supportati nei collegamenti Java MATLAB? – Thilo
Come ricordo, le varargs Java sono semplicemente zucchero sintattico per il costrutto dell'array – Amro
Risposta molto utile. Molte grazie. Non sono così esperto con Java in MATLAB ma sto imparando. – yuk