Próbuję użyć MongoDB z MATLAB. Chociaż dla MATLAB nie ma wersji supported driver, jest jedna dla Javy. Na szczęście udało mi się go użyć do połączenia z bazą danych, itp. I downloaded najnowszą (2.1) wersją pliku jar i zainstalować ją za pomocą JAVAADDPATH. Potem próbowałem podążać za Java tutorial.Podłączanie do MongoDB z MATLAB
Oto kod
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);
Oto gdzie ułożone. coll
ma być obiektem DBCollection
, ale w rzeczywistości jest obiektem klasy com.mongodb.DBApiLayer$MyCollection
. Tak więc ostatnie polecenie zwraca błąd:
??? Nie znaleziono metody "wstaw" z pasującym podpisem dla klasy "com.mongodb.DBApiLayer $ MyCollection".
W tutorialu zmienna coll
tworzony jest wyraźnie jako przedmiot DBCollection:
DBCollection coll = db.getCollection("testCollection")
Czy robię coś źle w MATLAB-ie? Jakieś pomysły?
Kolejne niewielkie pytanie dotyczące zmiennej colls
. Jest to klasa com.mongodb.util.OrderedSet
i zawiera listę nazw wszystkich kolekcji w bazie danych. Jak mogę go przekonwertować na macierz komórek MATLAB?
Aktualizacja: Oprócz Amro's answer ten działa tak samo:
wc = com.mongodb.WriteConcern();
coll.insert(doc,wc)
+1. Metoda oczekuje tablicy (a raczej vararg). Od wersji Java5 istnieją już warianty, więc z poziomu Java możesz po prostu wywołać je bezpośrednio z DBObject. Czy to oznacza, że varargs nie są obsługiwane w powiązaniach Java MATLAB? – Thilo
Jak pamiętam, Java varargs są po prostu syntaktycznym cukrem dla konstruktu tablicowego – Amro
Bardzo przydatna odpowiedź. Wielkie dzięki. Nie mam tak dużego doświadczenia z Javą w MATLAB, ale uczeniem się. – yuk