Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab通过Java驱动程序删除MongoDB集合中的所有文档_Java_Matlab_Mongodb - Fatal编程技术网

Matlab通过Java驱动程序删除MongoDB集合中的所有文档

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

我正在为mongodb集合编写一个清理例程,用于通过java驱动程序进行单元测试(我尝试了“本机”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类存在“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
输入参数类型的评论让我走上了正确的道路!不客气。即使我不知道正确的答案,我也很高兴看到我能让你走上正确的道路。