最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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);

兩種方法查詢結果相同,區(qū)別是第一種方法使用了include等函數(shù),需要包含頭文件 import static com.mongodb.client.model.Projections.*;

第二種方法使用Document代替了include等函數(shù),無需包含此頭文件。

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條數(shù)據(jù)

MongoCursor<Document> cursor = collection.find(new Document("username","liuchao")).sort(new Document("time",-1)).limit(n).iterator();
//對滿足條件username=“l(fā)iuchao”的結果進行降序排列,并獲取前n條數(shù)據(jù)。(n=0獲取全部)

Java使用MongoDB數(shù)據(jù)庫相關API小記

MongDB數(shù)據(jù)庫使用

MongoDB數(shù)據(jù)庫的查詢條件或者說習慣對于使用MySQL數(shù)據(jù)庫的開發(fā)人員不太友好,這里總結一些API的使用心得。

首先介紹我的使用環(huán)境

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數(shù)據(jù)庫需要的配置,以springboot框架為例,配置文件如下:

文件名:application.properties

#springboot MongoDB配置
spring.data.mongodb.username=用戶名
spring.data.mongodb.password=密碼
spring.data.mongodb.authentication-database=一般是admin
spring.data.mongodb.database=數(shù)據(jù)庫名
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 “數(shù)據(jù)庫名”);

??? ?@Autowired
? ? private MongoTemplate mongoTemplate;
?? ? /**
? ? ?* save有添加的作用,也有更新的作用; 取決于存入的id是否在文檔中已經存在
? ? ?* @param student 學生對象
? ? ?*/
?? ? public void saveStudent(Student student)
? ? {
? ? ? ? //返回的結果是保存的對象本身, 所以一般不寫
? ? ? ? Student result = mongoTemplate.save(student);
? ? }
  • b.刪除
?? ?/**
? ? ?* 根據(jù)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.查詢

根據(jù)ObjectId查詢單個

?? ? /**
? ? ?* 根據(jù)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()
? ? {
? ? ? ? //第一個參數(shù)可以理解為查出的結果應該封裝到怎樣的對象中,第二個參數(shù)可以理解為表名(也可以不寫)
? ? ? ? return mongoTemplate.findAll(Student.class, "tb_student");
? ? }

根據(jù)條件查找

比如查找ObjectId不是1的所有數(shù)據(jù)

?? ?public List<Student> findByCondition()
? ? {
? ? ?? ?//構造查詢條件
? ? ? ? Query query=Query.query(Criteria.where("id").ne(1));
? ? ? ? //執(zhí)行查找操作,最后一個參數(shù)可以省略(在實體類上已經加上了注解,指定了對應的表名也就是document的名字)
? ? ? ? List<Student> list = mongoTemplate.find(query, Student.class, "tb_student");
? ? ? ? return list;
? ? }

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Spring實戰(zhàn)之FileSystemResource加載資源文件示例

    Spring實戰(zhàn)之FileSystemResource加載資源文件示例

    這篇文章主要介紹了Spring實戰(zhàn)之FileSystemResource加載資源文件,結合實例形式分析了spring FileSystemResource加載xml資源文件的具體實現(xiàn)步驟與相關操作技巧,需要的朋友可以參考下
    2019-12-12
  • java調用WebService服務的四種方法總結

    java調用WebService服務的四種方法總結

    WebService是一種跨編程語言、跨操作系統(tǒng)平臺的遠程調用技術,已存在很多年了,很多接口也都是通過WebService方式來發(fā)布的,下面這篇文章主要給大家介紹了關于java調用WebService服務的四種方法,需要的朋友可以參考下
    2021-11-11
  • Java使用NIO包實現(xiàn)Socket通信的實例代碼

    Java使用NIO包實現(xiàn)Socket通信的實例代碼

    本篇文章主要介紹了Java使用NIO包實現(xiàn)Socket通信的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java關于桶排序的知識點總結

    Java關于桶排序的知識點總結

    這篇文章給大家總結了關于JAVA中J桶排序的相關知識點和用法分享,有興趣的讀者跟著學習下。
    2018-04-04
  • mybatis那些約定的配置你真的都了解嗎(經驗總結)

    mybatis那些約定的配置你真的都了解嗎(經驗總結)

    mybatsi中Mapper和xml文件之間有很多約定俗稱的規(guī)則,比如名稱匹配,包掃描,別名等,這些規(guī)則是什么。如果想更加靈活,該如何配置呢?今天就給大家講一下如何配置mybatsi的xml文件
    2021-06-06
  • SpringBoot中使用攔截器的配置詳解

    SpringBoot中使用攔截器的配置詳解

    這篇文章主要介紹了SpringBoot中使用攔截器的配置詳解,攔截器是?AOP?的一種實現(xiàn),專門攔截對動態(tài)資源的后臺請求,即攔截對控制層的請?求,使用場景比較多的是判斷用戶是否有權限請求后臺,需要的朋友可以參考下
    2024-01-01
  • 使用Java在線生成pdf文檔的代碼實現(xiàn)

    使用Java在線生成pdf文檔的代碼實現(xiàn)

    在實際的業(yè)務開發(fā)的時候,研發(fā)人員往往會碰到很多這樣的一些場景,需要提供相關的電子憑證信息給用戶,熟悉這塊業(yè)務的童鞋,一定特別清楚,目前最常用的解決方案通過一些技術手段生成對應的PDF文件,下面小編給大家詳細說說
    2025-04-04
  • Java多線程中的Balking模式詳解

    Java多線程中的Balking模式詳解

    大家好,本篇文章主要講的是Java多線程中的Balking模式詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Java使用Runnable接口創(chuàng)建線程的示例代碼

    Java使用Runnable接口創(chuàng)建線程的示例代碼

    在Java中,多線程編程是實現(xiàn)并發(fā)操作的重要手段之一,通過多線程,程序可以同時執(zhí)行多個任務,從而提高應用程序的效率和響應速度,Java提供了多種創(chuàng)建線程的方式,其中實現(xiàn)Runnable接口是最常見且推薦的方式之一,本文將詳細介紹如何使用Runnable接口創(chuàng)建線程
    2025-02-02
  • 學會Pulsar Consumer的使用方式

    學會Pulsar Consumer的使用方式

    這篇文章主要介紹了Pulsar Consumer的使用方式,全文使用大量的代碼來做了詳細的講解,感興趣的小伙伴可以參考一下這篇文章,希望讀完能對你有很大的幫助
    2021-08-08

最新評論

江阴市| 临安市| 永泰县| 从江县| 诸城市| 米泉市| 新巴尔虎左旗| 广宗县| 阳西县| 靖州| 临朐县| 澄江县| 安图县| 平原县| 庆城县| 蛟河市| 怀远县| 日照市| 玉溪市| 定边县| 板桥市| 房产| 鄂尔多斯市| 隆尧县| 横峰县| 海南省| 衡南县| 饶阳县| 墨玉县| 深水埗区| 竹北市| 海南省| 光泽县| 政和县| 杂多县| 剑川县| 青田县| 五台县| 石门县| 沙雅县| 进贤县|