【Spring连载】使用Spring Data访问 MongoDB(二)----Template API


MongoTemplate及其反应式(reactive)对应类位于org.springframework.data.mongodb.core包中,是Spring MongoDB支持的中心类,为与数据库交互提供了丰富的功能集。该template提供了创建、更新、删除和查询MongoDB文档的方便操作,并提供了域对象和MongoDB documents之间的映射。
配置后,MongoTemplate是线程安全的,可以在多个实例中重用。

一、方便的方法

MongoTemplate类实现了MongoOperations接口。在尽可能多的情况下,MongoOperations上的方法以MongoDB driver Collection对象上可用的方法命名,以便让现有使用driver API的MongoDB开发人员熟悉。例如,你可以找到find, findAndModify, findAndReplace, findOne, insert, remove, save, update, 和 updateMulti等方法。设计目标是尽可能容易地在使用基础MongoDB driver和MongoOperations之间进行转换。这两个API之间的主要区别在于,MongoOperations可以传递域对象,而不是Document。此外,MongoOperations为Query, Criteria, 和 Update操作提供了流畅的API,而不是填充Document来指定这些操作的参数。
有关更多信息,请参阅文档的CRUD(章节八、九)部分。
引用MongoTemplate实例上的操作的首选方式是通过其接口MongoOperations。

二、执行回调函数Execute Callbacks

MongoTemplate提供了许多方便的方法来帮助你轻松执行常见任务。但是,如果你需要直接访问MongoDB driver API,可以使用几种Execute回调方法之一。execute回调为你提供了对MongoCollection或MongoDatabase对象的引用。

  • < T> T execute (Class<?> entityClass, CollectionCallback< T> action):为指定类的实体集合运行给定的CollectionCallback。
  • < T> T execute (String collectionName, CollectionCallback action):在给定名称的集合上运行给定的CollectionCallback。
  • < T> T execute (DbCallback action):运行DbCallback,根据需要转换任何异常。Spring Data MongoDB为MongoDB 2.2版引入的聚合(Aggregation)框架提供了支持。
  • < T> T execute (String collectionName, DbCallback< T> action):在给定名称的集合上运行DbCallback,根据需要转换任何异常。
  • < T> T executeInSession (DbCallback< T> action):在与数据库的同一连接中运行给定的DbCallback,以确保写操作繁重的环境中的一致性,在这里你可能读取你所写的数据。
    以下示例使用CollectionCallback返回有关索引的信息:
boolean hasIndex = template.execute("geolocation", collection ->
    Streamable.of(collection.listIndexes(org.bson.Document.class))
        .stream()
        .map(document -> document.get("name"))
        .anyMatch("location_2d"::equals)
);

三、Fluent API

作为与MongoDB进行更低级交互的核心组件,MongoTemplate提供了广泛的方法,涵盖了从集合创建、索引创建和CRUD操作到更高级的功能(如Map Reduce和聚合)的需求。你可以为每个方法找到多个重载。其中大多数涉及API的可选或可为null的部分。

FluentMongoOperations为MongoOperations的常见方法提供了一个更窄的接口,并提供了更易读、更流畅的API。入口点(insert(…), find(…), update(…), 和其他)遵循基于要运行的操作的自然命名模式。从切入点来看,API设计为仅提供依赖于上下文的方法,这些方法会导致调用实际MongoOperations对应方的终止方法 — 在以下示例的情况下使用all方法:

四、异常转换

五、域类型映射

六、配置

七、索引及集合管理

八、保存、更新和删除Documents

九、查询Documents

十、Counting Documents

十一、聚合(Aggregation)框架支持

最近更新

  1. TCP协议是安全的吗?

    2024-02-21 13:00:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-21 13:00:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-21 13:00:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-21 13:00:01       20 阅读

热门阅读

  1. C/C++三角函数math.h库详解

    2024-02-21 13:00:01       26 阅读
  2. ThreadLocal(4):ThreadLocal的核心方法源码

    2024-02-21 13:00:01       30 阅读
  3. 代码随想录算法训练营第三八天 | 动态规划

    2024-02-21 13:00:01       36 阅读
  4. 基于STM32的家庭温湿度控制系统的设计

    2024-02-21 13:00:01       24 阅读
  5. 【C# 中抓取包含多个屏幕内容的整个桌面】

    2024-02-21 13:00:01       33 阅读
  6. chatGPT的前世今生

    2024-02-21 13:00:01       29 阅读
  7. 客户管理的设计思路

    2024-02-21 13:00:01       24 阅读
  8. Go的异常处理

    2024-02-21 13:00:01       26 阅读