【问题标题】:How do i check whether the document exists using Mongodb and JAVA?如何使用 Mongodb 和 JAVA 检查文档是否存在?
【发布时间】:2015-10-07 20:40:27
【问题描述】:

我创建了一个简单的 java 应用程序作为我的大学迷你项目,其中一个模块允许用户执行插入、删除、更新、搜索等操作 出于验证目的,如果用户尝试删除数据库中不存在的记录,我希望向用户显示错误消息 “抱歉,找不到记录”我已经尝试尝试 catch 块来检查如果找不到文档但 dint 工作时 mongodb 是否抛出异常......我对 JAVA 和 Mongodb 完全陌生,所以我不知道它,有人可以吗请帮我... 这是我的 deleteActionPerformed 代码和我尝试过的代码

 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);
        }
    }   

try catch 块作用于 java 或 mongodb 未生成未找到类型异常...

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    这可能不是最有效的方法,但它应该可以工作。 我根据我的一些代码对其进行了改编,以寻找特定的文档值(_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;
    }
    

    编辑:似乎最好使用 count 方法。请参考以下答案https://stackoverflow.com/a/32509268/2520767

    【讨论】:

      【解决方案2】:

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

      所以而不是:

      db.collection.findOne({_id: “myId”}, {_id: 1})
      

      你应该使用:

      db.collection.find({_id: “myId”}, {_id: 1}).limit(1)
      

      【讨论】:

      • 我应该如何检查是否找到了什么?
      猜你喜欢
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多