上篇已经讲了关于mongodb安装的教程,建议大家先安装,才能进行验证测试。
1、使用jpa操作mongodb涉及的依赖
关于可以引入的依赖解释:
- bson:高性能的编码解码。
- mongodb-driver-core:核心库,抽取出来主要是用于自定义 API。
- mongodb-driver-legacy:兼容旧的 API 的同步 Java Driver。
- mongodb-driver-sync:只包含 MongoCollection 泛型接口,服从一套新的跨 Driver 的 CRUD 规范。
- mongodb-driver:mongodb-driver-legacy + mongodb-driver-sync,新项目推荐使用它!
- mongodb-driver-async:新的异步 API,充分利用 Netty 或者 Java7 的 AsynchronousSocketChannel 已达到快而非阻塞的 IO。
- mongo-java-driver(uber-jar):包含 bson, mongodb-driver-core 和 mongodb-driver。
这里我引入的依赖是java同步驱动和驱动核心库:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>${mongodb.version}</version>
</dependency>
<!--mongodb的驱动 -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-core</artifactId>
<version>${mongodb.version}</version>
</dependency>
2、创建mongodb客户端
使用驱动链接mongodb客户端,类似于jdbc的操作:
创建链接传入的参数url格式为(mongodb://IP+端口/库名)mongodb://192.168.203.102:27017/czingcollectionName为库要操作的集合的名称:
collectionName为库要操作的集合的名称:
private final static String DATABASE="czing";
@Value("${spring.data.mongodb.uri}")
private String url;
/*
* 创建mongodb的客户端链接
* */
public MongoCollection<Document> getDb(String collectionName){
//1.创建链接
ConnectionString connString = new ConnectionString(url);
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(connString)
.retryWrites(true)
.build();
MongoClient mongoClient = MongoClients.create(settings);
return mongoClient.getDatabase(DATABASE).getCollection(collectionName);
}
创建链接之后,可以通过MongoCollection进行基本的数据操作:
这里以czing库下面的czing集合为例进行演示,演示之前先展示下这个集合是没有数据的:
数据插入操作insert:
@Test
public void insert() {
//集合名称
String collectionName = "czing";
MongoCollection<Document> collection = getDb(collectionName);
Document document = new Document();
document.append("name","关羽");
document.append("nick","关二爷");
InsertOneResult insertOneResult = collection.insertOne(document);
System.out.println("插入成功");
}
执行该insert方法,然后查询数据:
查询执行insert方法之后的数据:
下面是数据修改、删除、查询、分条件查询的方法:
大家可以分别执行看下效果。
/*
* 修改一条数据
* */
@Test
public void update() {
//集合名称
String collectionName = "czing";
MongoCollection<Document> collection = getDb(collectionName);
Bson condition = Filters.and(Filters.eq("name", "关羽"));
Bson update = new Document("$set", new Document().append("nick", "关云长"));
collection.updateMany(condition,update);
System.out.println("修改成功");
}
/*
* 删除数据
* */
@Test
public void delete() {
//集合名称
String collectionName = "czing";
MongoCollection<Document> collection = getDb(collectionName);
Bson condition = Filters.and(Filters.eq("name", "关羽"));
collection.deleteMany(condition);
System.out.println("删除成功");
}
/*
* 查询所有数据
* */
@Test
public void findAll(){
//集合名称
String collectionName = "czing";
MongoCollection<Document> collection = getDb(collectionName);
FindIterable<Document> documents = collection.find();
documents.forEach(item->{
System.out.println(item.get("name") + "--" + item.get("nick"));
});
}
/*
* 根据条件查询数据
* */
@Test
public void findByConditation(){
String collectionName = "czing";
MongoCollection<Document> collection = getDb(collectionName);
Bson condition = Filters.and(Filters.eq("name", "关羽"));
FindIterable<Document> documents = collection.find(condition);
documents.forEach(item->{
System.out.println(item.get("name"));
});
}
以上是链接mongodb是最原始的方法,大家可以根据代码测试验证下。有问题随时交流哈,下一篇为大家介绍另一种的java操作mongodb的方式。