J'essaie d'utiliser MongoDB avec MATLAB. Bien qu'il n'y ait pas de supported driver pour MATLAB, il y en a un pour Java. Heureusement j'ai été capable de l'utiliser pour se connecter à db, etc. I downloaded la dernière version (2.1) du fichier jar et l'installer avec JAVAADDPATH. Puis j'ai essayé de suivre le Java tutorial.Connexion à MongoDB à partir de MATLAB
Voici le code
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);
Voici où j'empilée. coll
censé être objet DBCollection
, mais en fait est l'objet de la classe com.mongodb.DBApiLayer$MyCollection
. Ainsi, la dernière commande renvoie l'erreur:
??? Aucune méthode 'insert' avec la signature correspondante trouvée pour la classe 'com.mongodb.DBApiLayer $ MyCollection'.
Dans le didacticiel la variable coll
est créé explicitement comme objet DBCollection:
DBCollection coll = db.getCollection("testCollection")
que je fais quelque chose de mal dans Matlab? Des idées?
Une autre petite question sur la variable colls
. C'est la classe com.mongodb.util.OrderedSet
et contient la liste des noms de toutes les collections dans la base de données. Comment pourrais-je le convertir en matrice de cellules MATLAB?
Mise à jour: En plus de Amro's answer cela fonctionne ainsi:
wc = com.mongodb.WriteConcern();
coll.insert(doc,wc)
+1. La méthode attend un tableau (ou plutôt un vararg). Depuis Java5, il y a maintenant varargs, donc depuis Java vous pouvez l'appeler directement avec le DBObject. Est-ce que cela signifie que les varargs ne sont pas supportés dans les liaisons Java MATLAB? – Thilo
Si je me souviens, Java Varargs sont simplement sucre syntaxique pour la construction de la matrice – Amro
Réponse très utile. Merci beaucoup. Je ne suis pas si expérimenté avec Java dans MATLAB mais j'apprends. – yuk