Java如何操作MongoDB常用API文档

 更新时间:2022年07月08日 10:05:47   作者:john__rambo  
这篇文章主要介绍了Java如何操作MongoDB常用API文档,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Java操作MongoDB常用API文档

1.查询指定字段

collection.find().projection(fields(include("username","pwd"),excludeId()));//返回username与pwd字段且不返回_id字段
Document doc = new Document().append("_id", 0).append("username",1).append("pwd",1);//指定查询字段,0为不包含此字段,1为包含此字段
FindIterable<Document> findIterable = collection.find().projection(doc);

两种方法查询结果相同,区别是第一种方法使用了include等函数,需要包含头文件 import static com.mongodb.client.model.Projections.*;

第二种方法使用Document代替了include等函数,无需包含此头文件。

2.按条件查询

Document myDoc = collection.find(and(eq("username","liuchao"),eq("pwd","12345"))).first();
//此方法需包含头文件import static com.mongodb.client.model.Filters.*;
Document myDoc = collection.find(new Document("username", "liuchao").append("pwd", "12345")).first();
//无需包含上面的头文件

3.对查询结果排序

FindIterable<Document> iterable = collection.find().sort(ascending("title"));//按title升序排列
FindIterable<Document> iterable = collection.find().sort(ascending("title","words"));//按title和words升序排列
FindIterable<Document> iterable = collection.find().sort(descending("title"));//按title降序排列
FindIterable<Document> iterable = collection.find().sort(new Document("time",-1));//按time降序排列

4.获取满足条件的前n条数据

MongoCursor<Document> cursor = collection.find(new Document("username","liuchao")).sort(new Document("time",-1)).limit(n).iterator();
//对满足条件username=“liuchao”的结果进行降序排列,并获取前n条数据。(n=0获取全部)

Java使用MongoDB数据库相关API小记

MongDB数据库使用

MongoDB数据库的查询条件或者说习惯对于使用MySQL数据库的开发人员不太友好,这里总结一些API的使用心得。

首先介绍我的使用环境

1.坐标的使用:导入springboot的相关坐标

    <!--MongoDB相关依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver-sync</artifactId>
        </dependency>

2.驱动坐标及其版本号:spring-boot-starter-data-mongodb 中查到的MongoDB版本号为3.8.2版(不需要写上去,这里只是明确引入坐标的版本)

    <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongodb-driver</artifactId>
      <version>3.8.2</version>
      <scope>compile</scope>
    </dependency>

3.MongoDB数据库需要的配置,以springboot框架为例,配置文件如下:

文件名:application.properties

#springboot MongoDB配置
spring.data.mongodb.username=用户名
spring.data.mongodb.password=密码
spring.data.mongodb.authentication-database=一般是admin
spring.data.mongodb.database=数据库名
spring.data.mongodb.port=端口号,默认27017
spring.data.mongodb.host=主机ip

4.相关API(以下API都是调用方法,而非底层源码)

  • a.保存(保存分为save方法和insert方法)

save有添加的作用,也有更新的作用; 取决于存入的id是否在文档中已经存在

save(T t),save(T t,String “数据库名”);

     @Autowired
    private MongoTemplate mongoTemplate;
     /**
     * save有添加的作用,也有更新的作用; 取决于存入的id是否在文档中已经存在
     * @param student 学生对象
     */
     public void saveStudent(Student student)
    {
        //返回的结果是保存的对象本身, 所以一般不写
        Student result = mongoTemplate.save(student);
    }
  • b.删除
    /**
     * 根据ObjectId删除记录
     *
     * @param id ObjectID
     */
    public void delStudentByObjectId(ObjectId id)
    {
        //构造查询条件
        Query query = Query.query(Criteria.where("id").is(id));
        //删除操作(常用API)
        mongoTemplate.remove(query, Student.class);
    }
  • c.修改

修改作用用到的方法是上面说的save方法

  • d.查询

根据ObjectId查询单个

     /**
     * 根据ObjectId查找单条记录
     * @param id ObjectId
     * @return 结果
     */
    public Student findStudent(ObjectId id)
    {
        Query query = Query.query(Criteria.where("id").is(id));
        //常用API
        Student student = mongoTemplate.findOne(query, Student.class);
        return student;
    }

查询所有

     public List<Student> findList()
    {
        //第一个参数可以理解为查出的结果应该封装到怎样的对象中,第二个参数可以理解为表名(也可以不写)
        return mongoTemplate.findAll(Student.class, "tb_student");
    }

根据条件查找

比如查找ObjectId不是1的所有数据

    public List<Student> findByCondition()
    {
        //构造查询条件
        Query query=Query.query(Criteria.where("id").ne(1));
        //执行查找操作,最后一个参数可以省略(在实体类上已经加上了注解,指定了对应的表名也就是document的名字)
        List<Student> list = mongoTemplate.find(query, Student.class, "tb_student");
        return list;
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java面试岗常见问题之ArrayList和LinkedList的区别

    Java面试岗常见问题之ArrayList和LinkedList的区别

    ArrayList和LinkedList作为我们Java中最常使用的集合类,很多人在被问到他们的区别时,憋了半天仅仅冒出一句:一个是数组一个是链表。这样回答简直让面试官吐血。为了让兄弟们打好基础,我们通过实际的使用测试,好好说一下ArrayList和LinkedList的区别这道经典的面试题
    2022-01-01
  • SpringBoot拦截器实现对404和500等错误的拦截

    SpringBoot拦截器实现对404和500等错误的拦截

    本篇文章主要介绍了SpringBoot拦截器实现对404和500等错误的拦截,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • Java文本文件操作方法实例详解

    Java文本文件操作方法实例详解

    这篇文章主要介绍了Java文本文件操作方法,以实例形式较为详细的分析了java操作文本文件的相关技巧,需要的朋友可以参考下
    2015-06-06
  • java中List删除时需要的注意事项

    java中List删除时需要的注意事项

    最近在利用java中的LIST在删除时发现了一个错我,通过查找相关的资料终于解决了,觉着有必要分享处理给同样遇到这个问题的朋友参考,下面这篇文章主要介绍了java中List删除时需要的注意事项,需要的朋友可以一起来看看吧。
    2017-01-01
  • Idea中添加Maven项目支持scala的详细步骤

    Idea中添加Maven项目支持scala的详细步骤

    这篇文章主要介绍了Idea中添加Maven项目支持scala,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • java如何获得redis所有的key-value

    java如何获得redis所有的key-value

    这篇文章主要介绍了java如何获得redis所有的key-value,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java职责链模式的深入了解

    Java职责链模式的深入了解

    这篇文章主要为大家介绍了Java职责链模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Spring Data JPA中的Specification动态查询详解

    Spring Data JPA中的Specification动态查询详解

    Specification是一个设计模式,用于企业级应用开发中,其主要目的是将业务规则从业务逻辑中分离出来,在数据查询方面,Specification可以定义复杂的查询,使其更易于重用和测试,这篇文章主要介绍了Spring Data JPA中的Specification动态查询详解,需要的朋友可以参考下
    2023-07-07
  • 解读Integer类的parseInt和valueOf的区别

    解读Integer类的parseInt和valueOf的区别

    这篇文章主要介绍了解读Integer类的parseInt和valueOf的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • springboot实现防重复提交和防重复点击的示例

    springboot实现防重复提交和防重复点击的示例

    这篇文章主要介绍了springboot实现防重复提交和防重复点击的示例,帮助大家更好的理解和学习springboot框架,感兴趣的朋友可以了解下
    2020-09-09

最新评论