• 主页
  • 归档
  • 分类
  • 照片墙
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 分类
  • 照片墙
  1. 1. (一) 连接MongoDB
  2. 2. (二) 认证
  3. 3. (三) 获取一个集合
  4. 4. (四) 数据对象
  5. 5. (五) 插入与删除
  6. 6. (六) 查询

5.0、Java操作MongoDB数据库

2018-01-26 19:26:45
总字数 579
预计阅读时间 2 分钟

所需要的驱动jar包

(一) 连接MongoDB

一个MongoClient的实例代表一个客户端连接
从中可以获取到需要使用的数据库MongoDatabase对象

1
2
3
4
5
MongoClient client = new MongoClient("localhost",27017);
MongoDatabase db = client.getDatabase("demo");

// 使用完毕后, 需要关闭客户端连接
client.close();

MongoClient是线程安全的,可以在多程程环境中共享同一个MongoClient。通常来说,一个应用程序中,只需要生成一个全局的MongoClient实例

(二) 认证

上述方式是在数据库没有添加用户认证的情况下实现的连接
认证信息用MongoCredential对象表示

1
2
3
4
5
6
7
8
ServerAddress address = new ServerAddress("localhost", 27017);
// 参数分别是 用户名 所在数据库 密码(char数组形式)
MongoCredential credential = MongoCredential.createCredential("sookie", "demo", "123456".toCharArray());

// 由于构造函数接受一个List对象, 所以需要进行一次包装
MongoClient client = new MongoClient(address, Arrays.asList(credential));

client.close();

(三) 获取一个集合

1
2
3
MongoDatabase db = client.getDatabase("demo");
//获取指定名称的集合
MongoCollection<Document> collection = db.getCollection("test");

在集合对象上就可以直接进行增删改查的操作

(四) 数据对象

或者也可以称为文档 , 本身是一个JSON
使用Document对象来表示
任何需要JSON的地方都通用这个对象( 包括数据的查询结果 )

(五) 插入与删除

Document中的静态方法parse可以将JSON字符串转化为Document对象 , 用于插入方法的参数

1
2
3
Person person = new Person("Sookie",18);
Document doc = Document.parse(JSON.toJSONString(person));
collection.insertOne(doc);

insert相关的方法也可以接受Map对象等作为参数 , 具体的参考源码

删除使用deleteOne和deleteMany方法
前者表示删除符合条件的一条数据 , 后者表示删除符合条件的多条数据

1
2
Bson filter = new BasicDBObject("age",18);
collection.deleteMany(filter);

Bson是一个接口 , BasicDBObject是这个接口的一个实现类 , 可以作为查询条件

(六) 查询

1
2
3
4
5
// 执行查询操作, 方法名称与终端所用的指令类似
FindIterable<Document> result = collection.find();
for (Document doc : result) {
System.out.println(doc);
}

find函数也有Bson作为参数的重载形式 , 查询条件的创建方式同上面的删除操作
包含$操作符的查询条件同样可以使用BasicDBObject创建

  • 数据库
  • MongoDB
  • MongoDB

扫一扫,分享到微信

5.1、morphia
crontab-定时任务 
© 2024 夏夜梦星辰
鲁ICP备19028444号
Power By Hexo
  • 所有文章
  • 友情链接
  • 关于我
{{searchItem.query}}
标签: 分类:
  • maven
  • 持续集成
  • JMS
  • 线程
  • JavaScript
  • ECMAScript6
  • 单元测试
  • Promise
  • Web Worker
  • 函数
  • prototype
  • 模块化
  • 正则表达式
  • 数据库
  • MongoDB
  • 索引
  • 集群
  • 全文检索
  • flutter
  • dart
  • git
  • 版本控制
  • linux
  • shell
  • docker
  • nginx
  • jenkins
  • opencv
  • vim
  • react
  • react native
  • 前端
  • css
  • HTML5
  • Hexo
  • sass
  • Three.js
  • TypeScript
  • Vue
  • 组件化
  • base64
  • webpack
  • nodejs
  • gulp
  • TensorFlow
  • 机器学习
  • 算法
  • 动态规划
  • 数据结构
  • Java
  • JavaScript
  • MongoDB
  • flutter
  • Git
  • linux
  • react
  • 前端杂烩
  • 男生女生
  • 算法
  • 十年饮冰,难凉热血
  • †少女癌†
  • 猫与向日葵
  • coderfun
  • JENKINS
  • API管理后台
愿你最终能接纳每一面每一种的自己
独自活着便是团圆