前言
MongoDB 的逻辑结构是一种层次结构。主要由:
文档(document)、集合(collection)、数据库(database)这三部分组成的。逻辑结构是面
向用户的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。
在mongodb中主键的名称是 _id 如果你指定_id就使用你指定的,你如果没有指定,它就会自动生成一个 (注意是 _id 而不是id)
结构 | 说明 |
---|---|
document | MongoDB 的文档(document),相当于关系数据库中的一行记录。 |
collection | 多个文档组成一个集合(collection),相当于关系数据库的表。 |
多个集合(collection) | 多个集合(collection),逻辑上组织在一起,就是数据库(database)。 |
多个数据库 | 一个 MongoDB 实例支持多个数据库(database)。 |
1、使用mongodb的客户端操作
mongodb-driver是mongo官方推出的java连接mongoDB的驱动包,相当于JDBC驱动
- 1、引入操作mongodb的客户端
<!-- 引入mongodb客户端并不是直接使用spring-boot-data封装好的对象 -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.6.3</version>
</dependency>
- 2、增删该查
package cn.gxm.mongdb_demo;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
/**
* @author gxm
* @date 2019/1/22
*/
public class Demo01 {
//客户端
private MongoClient mongoClient;
//数据库
MongoDatabase spitdb;
//表(集合)
MongoCollection<Document> spit;
@Before
public void premise(){
mongoClient = new MongoClient("192.168.25.128");
spitdb = mongoClient.getDatabase("spitdb");
spit = spitdb.getCollection("spit");
}
// 增
@Test
public void insertMongodb(){
Map<String,Object> map=new HashMap();
map.put("_id","1");
map.put("content","我是测试");
map.put("userid","99999");
map.put("visits",10000);
map.put("publishtime",new Date());
Document document=new Document(map);
//插入数据
spit.insertOne(document);
//关闭连接
mongoClient.close();
}
//删
@Test
public void deleteMongodb(){
//查询的条件,可以放入多个条件
BasicDBObject bson=new BasicDBObject("visits",new
BasicDBObject("$gt",1000) );// 构建删除条件,vistits大于1000的
spit.deleteMany(bson);
mongoClient.close();
}
//增加便是修改,只要 _id 一样
//查
@Test
public void findMongodb(){
//查询的条件,可以放入多个条件
BasicDBObject bson=new BasicDBObject("userid","99999" );// 构建查询条件,用户id为9999的数据
FindIterable<Document> documents = spit.find(bson);
for(Document document : documents){
System.out.println(document.get("content"));
System.out.println(document.get("userid"));
System.out.println(document.get("visits"));
System.out.println(document.get("publishtime"));
System.out.println(document.get("_id"));
}
}
}
2、使用spring-boot-starter-data-mongodb
SpringData家族成员之一,用于操作MongoDb的持久层框架,封装了底层的mongodbdriver。
既然是spring-data系列那么就和以前的使用sping-data-jpa操作mysql等关系型数据库一样!
- 1、配置端口以及主机
spring:
data:
mongodb:
host: 192.168.25.128 #指定主机
database: spitdb #指定数据库
port: 27017 #指定端口
- 2、绑定实体类与mongodb中的那个集合(表)
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.Date;
/**
* @author GXM
* @date 2019/1/23
*/
@Document(collection = "spit") #绑定实体类与mongodb中的那个集合(表)
public class Spit implements Serializable {
@Id # 唯一主键
private String _id;
- 2、增删改查
– 写一个dao层接口实现MongoRepository<T,T>
public interface SpitDao extends MongoRepository<Spit,String> {
}
参数 | 说明 |
---|---|
第一个参数 | 绑定的实体类 |
第二个参数 | ,该实体类主键的类型 |
3、使用刚刚的接口即可,至于分页的数据查询就像以前使用jpa时一样即可
SpitDao.save(Spit spit) //增,改
SpitDao.deleteById(String id) //删
SpitDao.findById(String id) //查
我这里只是写了简单的操作,至于复杂的个人觉得比较完善的博客地址:
https://blog.csdn.net/feinifi/article/details/83752862