我正在通过java驱动程序为单元测试编写mongodb集合的清理例程(我尝试了“本机”matlab驱动程序,但文档很简陋)。
我可以得到一个连接(至少我认为我可以),但我坚持在DBCollection对象上调用remove方法。
我正在运行以下代码:
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'匹配签名的方法'remove'。
因为我知道DBCollection类存在'删除'方法,所以我现在有点不知所措。
任何帮助将不胜感激。请注意,就OOP而言,我基本上是文盲:-S
修改
请注意我也试过
events.remove({});
导致相同的错误消息。
答案 0 :(得分:1)
根据API documentation of DBCollection.remove
,您必须提供仅指定删除条件的DBObject
。它还说要传递一个空文档来删除集合中的所有文档。至少你必须提供一个参数。
根据有关如何remove all documents from a collection的文档,您只需将指示空文档的参数{}
传递给该方法。所以你必须致电
events.remove( {} );
在评论中回答您的问题:参数必须是描述删除条件的DBObject
。 游标不是这样的文档。
答案 1 :(得分: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);