2014-08-29 85 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

相关问题