• Java中操作MongoDB-自用笔记


    配置虚拟机mongo配置

    vi /opt/servers/mongodb_demo/mongodb/conf/mongod.conf
    
    • 1
    net:
    	bindIP: 192.168.121.134
    	port: 27017
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    尝试用虚拟机登入mongo注意

    mongod -f /opt/servers/mongodb_demo/mongodb/conf/mongod.conf
    
    • 1

    正常登陆

    mongo 192.168.121.134:27017
    
    • 1

    在这里插入图片描述

    配置idea

    创建空maven项目即可

    导入相关依赖

            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>4.6version>
                <scope>testscope>
            dependency>
            <dependency>
                <groupId>org.mongodbgroupId>
                <artifactId>mongo-java-driverartifactId>
                <version>3.12.1version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    properties配置文件

    host=192.168.121.134
    port=27017
    dbname=aticledb
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    工具类与测试类

    MongoUtils.java

    import com.mongodb.client.MongoClient;
    import com.mongodb.client.MongoClients;
    import com.mongodb.client.MongoDatabase;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    public class MongoUtils {
        private static Properties properties;
        private static MongoDatabase mongoDatabase;
        private static InputStream stream = null;
        private static String host;
        private static int port;
        private static String dbname;
        //1.创建一个静态代码块,用于初始化工具类中的静态变量,该静态代码块在类加载过程中的初始化阶段    执行,并且只执行一次
        static {
            //判断properties集合对象是否为空,为空则创建一个集合对象
            if (properties == null) {
                properties = new Properties();
            }
    		/*
    		由于我们调用load方法,而load方法底层抛出了一个IOException异常,此异常为编译时期异常
    		所以,我们调用load方法时,需要处理底层抛过来的异常
             */
            try {
                //创建一个InputStream字节输入流对象,用于接收mongodb.properties配置文件中的配置参数
                stream = MongoUtils.class.getClassLoader().getResourceAsStream
                        ("mongodb.properties");
                //properties集合对象调用load()方法,将配置参数加载到properties集合中
                properties.load(stream);
            } catch (IOException e) {
                e.printStackTrace();
            }
            //根据mongodb.properties配置文件中的key,获取value值
            host = properties.getProperty("host");
            port = Integer.parseInt(properties.getProperty("port"));
            dbname = properties.getProperty("dbname");
        }
        //2.定义一个getMongoClient()方法,用于获取MongoDB数据库的连接对象
        public static MongoClient getMongoClient(){
            //由于MongoClients对象调用create()方法,该方法的参数是一个字符串,因此这里将host        和port拼接成字符串,再作为参数传入到该方法中
            String addr = "mongodb://"+host+":"+port;
            MongoClient mongoClient = MongoClients.create(addr);
            return mongoClient;
        }
        //3.定义一个getMongoConn()方法,用于实现连接指定的MongoDB数据库
        public static MongoDatabase getMongoConn() {
            MongoClient mongoClient = getMongoClient();
            mongoDatabase = mongoClient.getDatabase(dbname);
            return mongoDatabase;
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    测试类,尝试连接mongodb(成功)

    import com.mongodb.client.MongoDatabase;
    
    /**
     * create by 刘鸿涛
     * 2022/10/31 13:47
     */
    @SuppressWarnings({"all"})
    public class TestMongo {
        private static MongoDatabase mongoDatabase;
        public static void main(String[] args) {
            MongoDatabase mongoConn = MongoUtils.getMongoConn();
            System.out.println(mongoConn);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    测试展示所有数据库

        @Test
        public void getDBs() {
            MongoClient mongoClient = MongoUtils.getMongoClient();
            MongoIterable<String> databaseNames = mongoClient.listDatabaseNames();
            for (String databaseName : databaseNames) {
                System.out.println(databaseName);
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    测试展示所有集合(表)

        @Test
        public void getCollection(){
            mongoDatabase = MongoUtils.getMongoConn();
            MongoIterable<String> listCollectionNames = mongoDatabase.listCollectionNames();
            for (String collectionName:
                 listCollectionNames) {
                System.out.println(collectionName);
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 这张图证明查询aticledb数据库成功,其中有一个集合(表)
      在这里插入图片描述

    创建集合

        //创建集合
        @Test
        public void createCollection(){
            mongoDatabase = MongoUtils.getMongoConn();
            mongoDatabase.createCollection("guigui");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    删除集合

        //删除集合
        @Test
        public void dropCollection(){
             mongoDatabase = MongoUtils.getMongoConn();
            MongoCollection<Document> guigui = mongoDatabase.getCollection("guigui");
            guigui.drop();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查找文档

        //查找文档
        @Test
        public void findDocument(){
             mongoDatabase = MongoUtils.getMongoConn();
            MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
            FindIterable<Document> documents = comment.find();
            for (Document document:documents){
                System.out.println(document);
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    插入文档

        //插入文档
        @Test
        public void insertDocument(){
            mongoDatabase = MongoUtils.getMongoConn();
            MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
            Document document = new Document("_id", "7").append("articleid","100001").
                    append("content","吃饭前,先喝杯水,可减少饭量").
                    append("userid","1007").
                    append("nickname","玛丽莲").
                    append("age","18").
                    append("likenum","8888").
                    append("state",null);
            comment.insertOne(document);
            System.out.println("success");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    更新文档

        //更新文档
        public void updateDocument(){
            mongoDatabase  = MongoUtils.getMongoConn();
            MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
            Document document = new Document("content","饭后记得吃饭");
            comment.updateOne(Filters.eq("content","吃饭前,先喝杯水,可减少饭量"),new Document("$set",document));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    删除文档

        //删除文档
        @Test
        public void deleteDocument(){
            mongoDatabase  = MongoUtils.getMongoConn();
            MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
            comment.deleteOne(Filters.eq("_id","7"));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意防火墙

    未关闭防火墙error

    在这里插入图片描述

    关闭防火墙后

    在这里插入图片描述

  • 相关阅读:
    TTS 擂台: 文本转语音模型的自由搏击场
    设计模式学习笔记 - 面向对象 - 5.接口和抽象类的区别
    Android 13.0 无源码app修改它的icon图标
    Flink学习:Flink支持的数据类型
    内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境(mobaxterm、tigervnc、nfs、node)
    3分钟使用 WebSocket 搭建属于自己的聊天室(WebSocket 原理、应用解析)
    定理证明过程的复杂度(Stephen A .Cook)定理1证明的解析
    vue项目中设置background: url() 是行内样式不生效,样式表是可以的
    射频功率放大器应用中GaN HEMT的表面电势模型
    口袋参谋:批量下载优质买家秀超实用工具!
  • 原文地址:https://blog.csdn.net/qq_39123467/article/details/127612330