java 操作MongoDB API

java 操作MongoDB API

一、获取Mongo的连接
1、数据库没有用户名和密码

    //依次是mongo的主机地址、端口号、数据库名称
    public static MongoDatabase getMongoDB(String host, int port, String dataBase){
        MongoClient mongoClient = new MongoClient(host, port);
        MongoDatabase database = mongoClient.getDatabase(dataBase);
        return database;
    }

2、数据库有用户名和密码

    //依次是IP:端口、数据库名称、用户名、密码
    public static MongoDatabase getMongoDByCredent(String url_port, String database, String username, String password){
        List<ServerAddress> serverAddList = new ArrayList<>();
        ServerAddress serverAddress = new ServerAddress(url_port);
        serverAddList.add(serverAddress);
        List<MongoCredential> credentialList = new ArrayList<>();
        MongoCredential credential = MongoCredential.createCredential(username, database, password.toCharArray());
        credentialList.add(credential);
        MongoClient mongoClient = new MongoClient(serverAddList,credentialList);
        return mongoClient.getDatabase(database);
    }

二、mongo的增删改查
1、插入文档

    public static void insertDocument(MongoDatabase database){
        MongoCollection collection = database.getCollection("表名");
        List<Document> documentList = new ArrayList<>();
        documentList.add(Document.parse("{\"uname\":\"aaaa\",\"data\":{\"patient_info\":{\"INFO\":{\"GENDER\":{\"value\":\"female\"}}}}}"));
        documentList.add(Document.parse("{\"uname\":\"bbb\",\"data\":{\"patient_info\":{\"INFO\":{\"GENDER\":{\"value\":\"female\"}}}}}"));
        collection.insertMany(documentList);
    }

2、删除文档
(1)删除整个文档

    public static void deleteDocument(MongoDatabase database){
        MongoCollection<Document> collection = database.getCollection("表名");
        BasicDBObject query = new BasicDBObject();
        query.put("caseID","49b5afb1-4026-4aad-8c93-af83e38a074a15d0739363f");
        //DeleteResult deleteResult = collection.deleteMany(query);//删除文档
        //System.out.println("共删除:"+deleteResult.getDeletedCount());
        Document oneAndDelete = collection.findOneAndDelete(query);//删除并返回文档
        ResultBean resultBean = gson.fromJson(oneAndDelete.toJson(), ResultBean.class);
        System.out.println("删除的文当为:"+gson.toJson(resultBean));
    }

(2)删除文档中的某个字段
思路:查询出需要删除字段的文档,将这些文档中的字段删除,得到新的文档,再删除旧文档插入新文档

   public static void deleteKeyValue(MongoDatabase mongoDatabase){
        MongoCollection<Document> collection = mongoDatabase.getCollection("表名");
        List<Document> documentList = new ArrayList<Document>();
        BasicDBObject query = new BasicDBObject();
        query.put("data.patient_info.INFO.GENDER.value","female");
        FindIterable<Document> documents = collection.find(query);
        MongoCursor<Document> iterator = documents.iterator();
        while(iterator.hasNext()){
            Document next = iterator.next();
            //变成jsonObject去除指定字段
            ResultBean resultBean = gson.fromJson(next.toJson(), ResultBean.class);
            JsonObject jsonObject = new JsonParser().parse(gson.toJson(resultBean)).getAsJsonObject();
            jsonObject.remove("uname");
            //将jsonObject转化为Document
            Document newDocument = Document.parse(gson.toJson(jsonObject));
            documentList.add(newDocument);
        }
        collection.deleteMany(query);
        collection.insertMany(documentList);
    }

3、修改文档
(1)更新文档中的字段信息

    public static void updataKeyValue(MongoDatabase database){
        MongoCollection<Document> collection = database.getCollection("表名");
        //查询条件
        BasicDBObject query = new BasicDBObject();
        query.put("data.patient_info.INFO.GENDER.value","男");
        //更新数据
        BasicDBObject newDocument = new BasicDBObject("$set",new BasicDBObject("data.patient_info.INFO.GENDER.value","male"));
        UpdateResult updateResult = collection.updateMany(query,newDocument);
        System.out.println("共修改:"+updateResult.getModifiedCount()+"\n------------修改后的数据信息为--------------");
        //结果映射
        BasicDBObject result = new BasicDBObject();
        result.put("uname",1);
        result.put("data.patient_info.INFO.GENDER.value",1);
        FindIterable<Document> documents = collection.find().projection(result);
        //展示结果
        MongoCursor<Document> iterator = documents.iterator();
        while (iterator.hasNext()){
            Document doc = iterator.next();
            ResultBean resultBean = gson.fromJson(doc.toJson(), ResultBean.class);
            System.out.println(gson.toJson(resultBean));
        }
    }

(2)更新文档

    public static void updateAllDocument(MongoDatabase database){
        MongoCollection<Document> collection = database.getCollection("表名");
        BasicDBObject query = new BasicDBObject();
        query.put("caseID","49b5afb1-4026-4aad-8c93-af83e38a074a15d0739363f");
        String jsonStr = "{\"a\":{\"b\":{\"c\":{\"d\":\"e\"}}}}";
        BasicDBObject newDocumnt = BasicDBObject.parse(jsonStr);
        BasicDBObject updateObj = new BasicDBObject();
        updateObj.put("$set",new BasicDBObject("data",newDocumnt));
        UpdateResult updateResult = collection.updateOne(query, updateObj);
        System.out.println("共修改:"+updateResult.getModifiedCount());
    }

4、查询文档

    public static void findDocuments(MongoDatabase database){
        MongoCollection<Document> collection = database.getCollection("表名");
        BasicDBObject query = new BasicDBObject();
        query.put("data.patient_info.INFO.GENDER.value","男");
        FindIterable<Document> documents = collection.find(query);
        //遍历结果集
        MongoCursor<Document> iterator = documents.iterator();
        while(iterator.hasNext()){
            Document doc = iterator.next();
            //按照指定类的格式生成结果,去掉多余字段,注意:类的属性应与json键值保持一致
            ResultBean resultBean = gson.fromJson(doc.toJson(), ResultBean.class);
            JsonObject jsonObject = new JsonParser().parse(gson.toJson(resultBean)).getAsJsonObject();
            jsonObject.addProperty("code",1);
            System.out.println(gson.toJson(jsonObject));
        }
    }
ResultBean:
    public class ResultBean {
        //属性名与json的key值必须一致
        private String crf_id;
        private String caseID;
        private String createTime;
        private String status;
        private String uname;
        private Object data;
        //setter and getter 方法
    }
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值