Java操作MongoDB数据库(连接,增编削查)

宁睿  论坛元老 | 2024-11-4 00:16:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1950|帖子 1950|积分 5860

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
连接背景:需利用第三方类库:mongo-java-driver-3.4.2.jar

不同的MongoDB需要利用的版本jar不同,根据需要可以自己在官网下载得当自己的版本
gson-2.8.8.jar:某些方法需要传入MongoDB所需的Bson对象,可通过Gson,fastjson等方式创建,此处用的Gson
1.连接MongoDB数据库:

返回值:一个数据库连接对象
参数: 参数一:String类型的ip,本地数据库,可写localhost 或者127.0.0.1
参数二:mongoDB的端标语,一般都是27017,根据自己安装端标语填写
MongoClient mc = new MongoClient("localhost",27017);
2.获取所有的数据库:通过连接对象的listDataBaseNames()方法获取

  1. 返回值:一个数据库名的集合,String类型,包含三个基本库admin,config,local
  2. 还有自己创建的所有数据库
  3. MongoIterabble<String> dblist = mc.listDataBaseNames();
复制代码
3.获取指定命据库:通过连接对象的getDatabase()获取,

  1. 返回值:一个具体的数据库对象
  2. MongoDatabase db = mc.getDatabase("数据库名");
复制代码
4.得到所有集合:

       留意:MongoDB中的集合类似MYSQL中的表,表中的每条数据都是一个文档(Document对象)
  1. 返回值:一个Docement类型的文档集合
  2. ListCollectionsIterable<Document> colllist = db.listCollections();
复制代码
5.得到指定的数据库集合

  1. 返回值:一个具体的数据库集合(MongoDB中的表)
  2. MongoCollection<Document> coll = db.getCollection("集合名");
复制代码
6.释放资源

留意:作为连接对象,利用完必须关闭,否则浪费资源
  1. mc.close()
复制代码
7.java操作mongoDB添加数据:

起首,我们先要 建立连接,获取到所利用的数据库以及集合(MongoDB中的集合,类似表)
MongoDB的连接驱动为我们提供了insertOne和insertmany方法,可一次添加一条或者多条数据
但是方法内部必须是一个Document的对象,或者Document对象组成的集合
        MongoClient mc = new MongoClient("localhost",27017);
        MongoDatabase db  = mc.getDatabase("myschool");
        MongoCollection<Document> teacher = db.getCollection("teacher");
        //添加一条数据
//        Document doc = new Document();
//        doc.append("tname", "老刘");
//        doc.append("tsex", "男");
//        doc.append("tbir", new Date());
//        doc.append("tage", 40);
//        teacher.insertOne(doc);
        //添加多条数据
        Document doc1 = new Document();
        doc1.append("tname", "老杨");
        doc1.append("tbir", "1992-2-2");
        doc1.append("tage", 28);
        
        Document doc2 = new Document();
        doc2.append("tname", "老王");
        doc2.append("tsex", "男");
        doc2.append("tbir", "1991-2-3");
        doc2.append("tage", 32);
        
        Document doc3 = new Document();
        doc3.append("tname", "小彭");
        doc3.append("tsex", "男");
        doc3.append("tbir", "2002-2-3");
        doc3.append("tage", 22);
        
        List<Document> dolist = Arrays.asList(doc1,doc2,doc3);
        teacher.insertMany(dolist);
        System.out.println("添加成功");
        mc.close();
8.java操作MongoDB删除数据:

同样的,我们先获取连接,利用数据库,以及集合对象,以及Document对象,将删除数据的条件添加至doc对象中,在调用方法deleteOne或者deleteMany删除
留意:无论删除多条还是单条数据,都有返回值,DeleteResult对象,
通过调用getDeletedCount()可得到删除记录的行数
        MongoClient mc = new MongoClient("localhost",27017);
        MongoDatabase db = mc.getDatabase("myschool");
        MongoCollection<Document> coll = db.getCollection("teacher");
        Document b1 = new Document();
        b1.append("tname", "老王");
        //只会删除编号最小的
        DeleteResult deleteOne = coll.deleteOne(b1);
        long count = deleteOne.getDeletedCount();
        System.out.println(count);
        //删除多条数据
        DeleteResult deleteMany = coll.deleteMany(b1);
        long count = deleteMany.getDeletedCount();
        System.out.println(count);
        mc.close();
9.java操作MongoDB修改数据:

同样的,我们先获取连接,利用数据库,以及集合对象,以及Document对象,将删除数据的条件添加至doc对象中,在调用方法updateMany方法修改
此方法需要两个参数:
参数一:Bson对象,利用GSON的Filter类,创建,作为筛选数据的条件
参数二:作为要修改的值
留意:此方法返回的updateResult对象,可获取多个效果
matchedCount:匹配到数据的行数
modifiedCount:修改的数量;
包罗没匹配到,但是直接添加的方法。详情参考我的贴子MongoDB学习总结
                    MongoClient mc = new MongoClient("localhost",27017);
                MongoDatabase db = mc.getDatabase("myschool");
                MongoCollection<Document> coll = db.getCollection("teacher");
                //修改单条数据
                Bson b1 = Filters.eq("tname","老刘");
                Document doc = new Document();
                doc.append("$set", new Document("tage",51));
                UpdateResult updateOne = coll.updateMany(b1, doc);
                long matchedCount = updateOne.getMatchedCount();
                long modifiedCount = updateOne.getModifiedCount();
                System.out.println(matchedCount);
                System.out.println(modifiedCount);
9.java操作MongoDB查询数据:
此外我们需要利用GSON可以将一些内容直接变为需要的Bson对象。
MongoClient mc = new MongoClient("localhost",27017);
        MongoDatabase db = mc.getDatabase("myschool");
        MongoCollection<Document> coll = db.getCollection("teacher");
        //条件
        //Bson b1 = Filters.eq("tname","老杨");
        //模糊查询
        //以什么开头 ^
        //以什么结尾  $
        Bson b1 = Filters.regex("tname","老");
        //再加分页
//        FindIterable<Document> find = coll.find(b1).skip((2-1)*3).limit(3);
        
        FindIterable<Document> find = coll.find().sort(new Document("tage",1));
        for(Document doc : find) {
            System.out.println(doc);
        }
        mc.close();

此处,我们学习到此,另外还包含了orm关系映射的学习,等等,再次不逐一先容

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表