Matlab通过Java驱动程序删除MongoDB集合中的所有文档
我正在为mongodb集合编写一个清理例程,用于通过java驱动程序进行单元测试(我尝试了“本机”matlab驱动程序,但文档非常稀少) 我可以启动连接(至少我认为我可以),但我一直无法在DBCollection对象上调用remove方法 我正在运行以下代码:Matlab通过Java驱动程序删除MongoDB集合中的所有文档,java,matlab,mongodb,Java,Matlab,Mongodb,我正在为mongodb集合编写一个清理例程,用于通过java驱动程序进行单元测试(我尝试了“本机”matlab驱动程序,但文档非常稀少) 我可以启动连接(至少我认为我可以),但我一直无法在DBCollection对象上调用remove方法 我正在运行以下代码: javaaddpath(pathToJarFile) import com.mongodb.*; mongoClient = MongoClient(mHost); mongoConn = mongoClient.getDB(dbNa
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类存在“remove”方法,所以我现在有点不知所措
任何帮助都将不胜感激。请注意,我基本上不懂OOP:-S
编辑: 请注意,我也试过了
events.remove({});
这将导致相同的错误消息。根据,必须提供一个只指定删除条件的DBObject
。它还表示传递一个空文档以删除集合中的所有文档。至少你必须提供一个论点
根据关于如何执行的文档,只需将指示空文档的参数{}
传递给该方法。所以你必须打电话
events.remove( {} );
要回答注释中的问题:参数必须是描述删除条件的
DBObject
。光标不是这样的文档。似乎MATLAB没有正确地传递{}
,因此创建一个空文档并将其传递给删除
确实有效
工作代码如下所示:
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);
应该从集合“事件”中删除什么?事件中包含的所有文档,因此根据
remove
的MongoDB文档使用方法remove
,而不使用输入参数。您参考哪些文档?我只能在DBCollection
上看到至少包含一个参数的remove
方法。可能您指的是。根据这一点,您应该执行事件。删除({})
。如果是这样的话,我会更新我的评论来回答。这可能是罪魁祸首。但是我只是尝试用find()
获取一个包含所有文档的游标,它确实可以在没有查询的情况下被调用,然后将该游标传递给remove
,并导致了相同的错误。remove
不能处理游标吗?不幸的是,events.remove({})代码>也不起作用。我现在唯一的猜测是,因为我正在将java驱动程序导入到Matlab中,Matlab中的{}
是一个空单元数组,所以参数没有按原样传递给驱动程序。我将尝试创建一个空文档对象,并将其传递给remove
,也许这会有所帮助。很抱歉。祝你好运。不过谢谢你的帮助!再次感谢您的帮助,您对remove
输入参数类型的评论让我走上了正确的道路!不客气。即使我不知道正确的答案,我也很高兴看到我能让你走上正确的道路。