JAVA操作MongoDB数据库实例教程

作者:快去吃姜 时间:2023-11-18 13:22:27 

前言:

mongodb是一个基于分布式文件存储的开源数据库系统。

mongodb与我们平常使用的mysql的区别:

   1.MySQL以表结构存储数据,mongodb以类JSON的文档的格式存储

   2.MySQL支持表联查,mongodb不支持表联查。

   3.MySQL是关系型数据库,而mongodb是非关系型数据库

   4.MySQL可以支持事务,外键等,而mongodb不支持

mysql中的概念MongoDB中的概念解释tablecollention表/集合rowdocument行/文档columnfield字段indexindex索引primary keyprimary key主键,mongo中每个documentdou默认有_id字段为主键

一.java链接mongodb

1.导入mongodb驱动包

2.创建链接对象

MongoClient mongoclient=new MongoClient("127.0.0.1",27017);

3.释放资源

mongoclient.close();

二.查看数据库的所有库和集合

1.查看所有库名

//获取链接对象,参数1为url,参数2为端口号
MongoClient mongoclient=new MongoClient("127.0.0.1",27017);
//获取所有库名的迭代器
MongoIterable<String> list= mongoclient.listDatebaseNames();
for(String str:list){
   System.out.println(str);//查看所有库名
}

2.查看所有集合名

//获取链接对象,参数1为url,参数2为端口号
MongoClient mongoclient=new MongoClient("127.0.0.1",27017);
//获取库对象,参数为库名
MongoDatabase db=mongoclient.getDatabase("school");
//获取当前库对象的所有集合名的迭代器
MongoIterable<String> list=db.getlistCollectionNames();
for(String str:list){
   System.out.println(str);//获取所有集合名
}
//获取集合对象,参数为集合名
MongoCollention<Document> collection=db.getCollection("student");

三.对数据库进行增删改查

1.新增数据

//获取集合对象
MongoCollection<Document> collection = db.getCollection("student");
//新增时创建一个Docuement对象,以键值对的形式传入内容
Document document = new Document();
document.put("name", "张三");
document.put("age", 99);
document.put("sex", "男");
//添加一条数据,没有返回值
collection.insertOne(document);
//新增多条数据,传入一个document集合
collection.insertMany(null);

Filters类(过滤器) 

        删除,修改,查询时传入的筛选条件

        举例: Bson eq=Filters.eq("name","张三");

Filters.eq()等值
Filters.gt()大于指定值(gte大于等于)
Filters.lt()小于指定值(lte小于等于)
Filters.ne()不等于指定
Filters.nin()不等于数组中的值
Filters.and()传入多个Bson对象,and连接
Filters.regex()模糊查询
Filters.exists()存在改字段

2.修改数据


//修改条件
Bson eq = Filters.eq("name","张三");
//修改匹配到的第一条
UpdateResult updateOne = collection.updateOne(
eq, new Document("$set",new Document("age",50)));
//修改匹配的多条
collection.updateMany(eq, null);

修改的返回值内容

AcknowledgedUpdateResult{matchedCount=0, modifiedCount=0, upsertedId=null}

matchedCount:代表匹配到的文档数

modifiedCount:代表被修改的文档数

upsertedId:代表修改的文档id(主键)

3.数据删除

//条件
Bson eq = Filters.eq("name","张三");
//删除一条符合的
DeleteResult deleteOne = collection.deleteOne(eq);
//删除 所有符合条件的
DeleteResult deleteMany = collection.deleteMany(eq);

删除的返回值内容

AcknowledgedDeleteResult{deletedCount=0}

deletedCount:被删除的文档数

4.查询数据

//无条件全查
FindIterable<Document> find = collection.find();
//带条件查询
Bson eq = Filters.regex("name", "张");
FindIterable<Document> find = collection.find(eq);

查询的结果集映射

 这种解析方式我们必须知道文档中的各个字段名

//全查
FindIterable<Document> find = collection.find();
//创建一个实体类集合准备接收结果
List<Student>  slist = new ArrayList<Student>();
//获取结果集迭代器对象
MongoCursor<Document> iterator = find.iterator();
while(iterator.hasNext()) {
Student s =  new Student();
Document next = iterator.next();
s.setSname(next.getString("name"));
s.setSsex(next.getString("sex"));
s.setSid(next.getInteger("sid"));
   //将结果添加至实体类集合
slist.add(s);
}

来源:https://blog.csdn.net/weixin_72696823/article/details/127135567

标签:java,mongodb,数据库
0
投稿

猜你喜欢

  • SpringBoot中打war包需要注意事项

    2023-11-05 19:44:42
  • Android 中RecycleView实现item的点击事件

    2023-10-21 18:59:13
  • java文件输出流写文件的几种方法

    2023-11-08 16:17:30
  • flutter实现底部导航栏切换

    2023-05-30 14:43:40
  • scala 读取txt文件的方法示例

    2022-09-30 19:21:10
  • android 布局属性详解

    2021-07-25 13:19:49
  • spring的jdbctemplate的crud的基类dao

    2022-05-30 13:05:17
  • JDK 7U15在 Windows x86平台下的安装方法

    2023-04-09 07:31:08
  • 在@Value注解内使用SPEL自定义函数方式

    2022-04-26 20:59:41
  • 如何通过指针突破C++类的访问权限

    2022-01-26 14:14:58
  • Android Studio实现仿微信APP门户界面详解及源码

    2022-06-29 20:08:52
  • java加载properties文件的六种方法总结

    2023-09-20 05:24:54
  • Android开发获取重力加速度和磁场强度的方法

    2022-05-27 23:07:09
  • Android实现密码明密文切换(小眼睛)

    2023-07-01 15:42:18
  • c#中(int)、int.Parse()、int.TryParse、Convert.ToInt32的区别详解

    2023-01-26 04:59:46
  • Java中i++与++i的区别和使用

    2022-03-20 18:08:18
  • C#入门之定义类成员与接口实现

    2023-05-25 09:50:58
  • JavaWeb中Servlet的深入讲解

    2022-03-07 21:12:36
  • JAVA中常见异常类

    2021-11-09 09:47:20
  • Java中获取文件大小的详解及实例代码

    2023-02-27 08:12:27
  • asp之家 软件编程 m.aspxhome.com