java操作mongdb【超详细】

Java操作

搭建

搭建

依赖
      

    <!--mongodb-->
          <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
          </dependency>


          配置文件
       

   spring:
           data:
            mongodb:
              host: ip
              port: 端口
              username: 账号
              password: 密码
              database: 数据库
              authentication-database: admin


        

实体类注解

Document(collection="")
位置:实体类上
作用:声明mongdb集合名
注意:若未加 @Document ,则识别mongdb集合名为实体类名小写

Id
位置:属性上方
表明是主键,不可重复,自带索引

Field("名称")
位置:属性上方
作用:声明mongdb集合中的key名
注意:若未加 @Field("名称") ,则识别mongdb集合中的key名为实体类属性名

JsonFormat
作用:后端格式化日期后返回给前端
@JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8”)
private Date birthday;//生日

@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)
private Date createTime;//创建时间

@JsonFormat(pattern = DateUtils.LONG_TIME_FORMAT, timezone = “GMT+8”)
private Date modifyTime;//修改时间

Transient
作用:被该注解标注的,将不会被录入到数据库中。只作为普通的javaBean属性。

Indexed
位置:属性上方/实体类上
作用:声明索引
唯一索引的话是@Indexed(unique = true)。
也可以对数组进行索引,如果被索引的列是数组时,MongoDB会索引这个数组中的每一个元素。
也可以对整个Document进行索引,排序是预定义的按插入BSON数据的先后升序排列

CompoundIndex
位置:实体类上
作用:声明复合索引
示例:
@CompoundIndex(name = 'age_idx', def = “{'lastName': 1, 'age': -1}”)
此索引名为age_idx,lastName和age将作为复合索引

实体类示例

banner

@Data
@Document("banner")
public class Banner {
@Id
private String _id;//mongdb的主键
private Integer bannerId;//自己定义一个主键,用于删改查,记得添加时要随机生成主键,保证唯一性
private String bannerName;//轮播图名称
private String bannerUrl;//地址
}            
          

Template

MongoTemplate

使用

@Autowired
private MongoTemplate mongoTemplate;
          

增加

增加单个数据

mongoTemplate.insert(banner);


insert: 若新增数据的主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常提示主键重复,不保存当前数据
 

mongoTemplate.save(banner);


save: 若新增数据的主键已经存在,则会对当前已经存在的数据进行修改操作。

修改

根据自定义id修改

public void update(Banner banner) {
//org.springframework.data.mongodb.core.query.Query/Criteria/Update
Query query = new Query();
Criteria criteria = new Criteria();
// 设置查询条件
criteria.and("bannerId").is(banner.getBannerId());
query.addCriteria(criteria);
//创建Update,修改字段 例如把title修改为params.getTitle()
Update update = new Update().set("bannerName", banner.getBannerName()).set("bannerUrl", banner.getBannerUrl());
//执行修改操作,返回修改成功的条数
mongoTemplate.updateMulti(query,update,Banner.class);
}

删除

根据主键删除

public void delete(String id) {
//org.springframework.data.mongodb.core.query.Query/Criteria
Query query = new Query();
Criteria criteria = new Criteria();
// 设置查询条件
criteria.and("_id").is(id);
query.addCriteria(criteria);
mongoTemplate.remove(query, Banner.class);
}




删除集合中全部数据

public void dropCollection(String collectionName) {
// 计算表中数据的条数并删除
// 查询表数据条数
Query query = new Query();
List
<NationalPostPlatformUserVO> all = mongoTemplate.findAll(NationalPostPlatformUserVO.class);
    long count = all.size();
    if (count > 0) {
    // 删除后,就留下表明。字段和值都删除
    mongoTemplate.remove(query, NationalPostPlatformUserVO.class);
    }
    }


          

基本查询

根据自定义id查找

public Banner findById(Integer id) {
//org.springframework.data.mongodb.core.query.Query/Criteria
Query query = new Query();
Criteria criteria = new Criteria();
// 设置查询条件
criteria.and("bannerId").is(id);
query.addCriteria(criteria);
return mongoTemplate.findOne(query, Banner.class);
}



查询全部

public List
<Banner> findAll() {
    return mongoTemplate.findAll(Banner.class);
    }

    查询总数
    long totals = mongoTemplate.count(new Query(), Banner.class);

    条件查询
    mongoTemplate.findOne 查询一条
    mongoTemplate.find查询多条

    Query query = new Query();
    Criteria criteria = new Criteria();
    criteria.and("bannerName").is(bannerName);//条件查询
    query.addCriteria(criteria);
    return mongoTemplate.findOne(query, Banner.class);

分页查询

分页封装类

@Data
public class PageResult {
protected List records;
protected long total;
protected long size;
protected long current;
}



分页查询

public PageResult search(int page, int size) {
// 查询总数
long totals = mongoTemplate.count(new Query(), Banner.class);
//查询全部数据
List
<Banner> banners = mongoTemplate.findAll(Banner.class);
    // 分页查询
    PageResult
    <Banner> bannerPage=new PageResult<>();
        bannerPage.setRecords(banners);
        bannerPage.setTotal(totals);
        bannerPage.setSize(size);
        bannerPage.setCurrent(page);
        return bannerPage;
        }

Criteria条件详解

详解
and()    $and    并且
andOperator()    $and    并且
orOperator()    $or    或者
gt()    $gt    大于
gte()    $gte    大于等于
in()    $in    是否被包含在数组或者list内
is()    $is    等于
regex()        $regex    正则表达式用于模式匹配,基本上是用于文档中的发现字符串  (下面有例子)
lt()    $lt    小于
lte()    $lte    小于等于
nin    $nin
不包含  
          

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Java操作MongoDB数据库,需要使用MongoDBJava驱动程序。以下是使用Java操作MongoDB数据库的基本步骤: 1. 导入MongoDBJava驱动程序。 2. 创建MongoClient实例,该实例表示MongoDB数据库服务器的连接。 3. 获取MongoDatabase实例,该实例表示MongoDB数据库。 4. 获取MongoCollection实例,该实例表示MongoDB集合。 5. 使用MongoCollection实例执行CRUD操作。 下面是一个示例代码,演示如何使用Java操作MongoDB数据库: ```java import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; public class MongoDBExample { public static void main(String[] args) { // 创建MongoClient实例,连接MongoDB服务器 MongoClient mongoClient = new MongoClient("localhost", 27017); // 获取MongoDatabase实例,连接到指定的数据库 MongoDatabase database = mongoClient.getDatabase("myDatabase"); // 获取MongoCollection实例,连接到指定的集合 MongoCollection<Document> collection = database.getCollection("myCollection"); // 插入文档 Document document = new Document("name", "John Doe") .append("age", 30) .append("gender", "male"); collection.insertOne(document); // 查询文档 Document query = new Document("name", "John Doe"); Document result = collection.find(query).first(); System.out.println(result); // 更新文档 Document filter = new Document("name", "John Doe"); Document update = new Document("$set", new Document("age", 31)); collection.updateOne(filter, update); // 删除文档 collection.deleteOne(filter); // 关闭MongoClient实例 mongoClient.close(); } } ``` 在上面的示例代码中,我们使用MongoDBJava驱动程序来连接到MongoDB数据库,获取MongoDB集合,并执行插入、查询、更新和删除操作。 需要注意的是,由于MongoDBJava驱动程序不包含在Java SDK中,因此需要手动导入MongoDBJava驱动程序库。例如,如果使用Maven构建Java项目,则需要在pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.12.7</version> </dependency> ``` 这样就可以使用MongoDBJava驱动程序来连接、查询和操作MongoDB数据库了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月木@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值