Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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
如何使用Mongodb和JAVA检查文档是否存在?_Java_Mongodb - Fatal编程技术网

如何使用Mongodb和JAVA检查文档是否存在?

如何使用Mongodb和JAVA检查文档是否存在?,java,mongodb,Java,Mongodb,我创建了一个简单的java应用程序作为我的大学迷你项目,其中一个模块允许用户执行插入、删除、更新和搜索等操作 出于验证目的,如果用户试图删除数据库中不存在的记录,我希望a向用户显示一条错误消息 “抱歉,找不到记录”我尝试了catch块来检查mongodb是否会抛出异常,如果文档找不到,但该功能有效。。。我对JAVA和Mongodb都是全新的,所以我对它一无所知,有人能帮我一下吗。。。 这是我的删除操作执行的代码和我尝试的代码 private void deleteActionPerformed

我创建了一个简单的java应用程序作为我的大学迷你项目,其中一个模块允许用户执行插入、删除、更新和搜索等操作 出于验证目的,如果用户试图删除数据库中不存在的记录,我希望a向用户显示一条错误消息 “抱歉,找不到记录”我尝试了catch块来检查mongodb是否会抛出异常,如果文档找不到,但该功能有效。。。我对JAVA和Mongodb都是全新的,所以我对它一无所知,有人能帮我一下吗。。。 这是我的删除操作执行的代码和我尝试的代码

 private void deleteActionPerformed(java.awt.event.ActionEvent evt) {                                       
        try
        {

        DBCollection col=db.getCollection("activity"); //my collection name is activity
        if(!Tid.getText().equals(""))  //Tid is the TextField in which i am taking input of _id
        {
        col.remove(new BasicDBObject().append("_id",(Object)Tid.getText()));
        }
        else
            JOptionPane.showMessageDialog(null,"Please Enter the ID");

        }catch(Exception e)
        {
            JOptionPane.showMessageDialog(null,"Record not Found "+e);
        }
    }   

作为java或mongodb使用的try-catch块dint未生成找不到的类型异常

这可能不是最有效的方法,但应该有效。 我根据我的一些代码对其进行了修改,以查找特定的文档值(而不是_id)。对于_id,可能有专门的方法

/**
* Checks if an activity exists with a given id. if no such activity exists
* returns false. Returns true for one or more activities with a matching
* id.
* 
* @param db
* @param id
* @return boolean - true if one or more functions with matching names exit.
*/
public static boolean activityExists(MongoDatabase db, ObjectId id) {
    FindIterable<Document> iterable = db.getCollection("activity").find(new Document("_id", id));
    return iterable.first() != null;
}
/**
*检查是否存在具有给定id的活动。如果不存在此类活动
*返回false。对于一个或多个具有匹配项的活动,返回true
*身份证。
* 
*@param-db
*@param-id
*@return boolean-如果一个或多个具有匹配名称的函数退出,则为true。
*/
公共静态布尔活动存在(MongoDatabase db,ObjectId){
FindIterable iterable=db.getCollection(“活动”).find(新文档(“_id”,id));
返回iterable.first()!=null;
}

编辑:似乎最好使用计数方法。请参考以下答案

在您的情况下,使用find()+limit()要快得多,因为findOne()将始终读取并返回文档(如果存在)。find()只返回一个游标(或不返回),并且仅在遍历游标时读取数据

因此,不是:

findOne({u id:myId},{u id:1})

你应使用:


db.collection.find({u-id:“myId”},{u-id:1}).limit(1)

以及如何检查是否找到了某些内容?