2014-08-29 91 views
0

我正在通過java驅動程序爲單元測試編寫一個mongodb集合的清理例程(我嘗試了「native」matlab驅動程序,但文檔是,好,稀少)。Matlab通過Java驅動程序從MongoDB集合中刪除所有文檔

我可以得到一個連接(至少我想我可以),但我堅持調用DBCollection對象的刪除方法。

我運行下面的代碼:

javaaddpath(pathToJarFile) 

import com.mongodb.*; 

mongoClient = MongoClient(mHost); 
mongoConn = mongoClient.getDB(dbName); 
auth = mongoConn.authenticate(user,password); 

events = mongoConn.getCollection('events'); 

events.remove(); 

在最後一行出現錯誤

沒有方法「刪除」相匹配的發現類的簽名com.mongodb.DBCollectionImpl 」。

因爲我知道'dbmol'方法存在DBCollection類,我目前有點虧本。

任何幫助,將不勝感激。請注意,我當它涉及到OOP基本文盲:-S


編輯:

請注意,我也嘗試

events.remove({}); 

導致同樣的錯誤信息。

+0

_What_應當從集合「事件」被刪除? – Seelenvirtuose 2014-08-29 11:24:19

+0

事件中包含的所有文檔,因此根據MongoDB的'remove'文檔使用沒有輸入參數的'remove'方法。 – sobek 2014-08-29 11:27:34

+0

你引用了哪些文檔?我只能看到'DBCollection'上的'remove'方法至少需要一個參數。 – Seelenvirtuose 2014-08-29 11:33:07

回答

0

似乎{}沒有被MATLAB正確傳遞,因此創建一個空文檔並將它傳遞給remove確實可行。

工作的代碼如下所示:

javaaddpath(pathToJarFile) 

import com.mongodb.*; 

mongoClient = MongoClient(mHost); 
mongoConn = mongoClient.getDB(dbName); 
auth = mongoConn.authenticate(user,password); 

events = mongoConn.getCollection('events'); 

empty = BasicDBObject(); 
events.remove(empty); 
1

根據API documentation of DBCollection.remove,您必須提供一個DBObject,它只是指定刪除標準。它進一步說要通過一個空白文檔來刪除集合中的所有文檔。至少你必須提供一個參數。

根據有關如何remove all documents from a collection的文檔,只需將參數{}指示爲空白文檔即可。所以,你必須調用

events.remove({}); 

要回答你的問題的意見:該參數必須是一個DBObject描述刪除標準。 A 光標不是這樣的文件。

+0

不幸的是,'events.remove({});'也不起作用。我現在唯一的猜測是,因爲我正在將Matlab驅動程序導入到Matlab中,並且Matlab中的{}}是一個空單元數組,所以參數不會傳遞給驅動程序。我會嘗試創建一個空的文檔對象並將其傳遞給'remove',這可能會有所幫助。 – sobek 2014-08-29 11:58:39

+0

然後我很抱歉。祝你好運。 – Seelenvirtuose 2014-08-29 12:02:27

+0

雖然感謝您的幫助! – sobek 2014-08-29 12:07:18

相關問題