竹笋

注册

 

发新话题 回复该主题

Spring认证中国教育管理中心Spr [复制链接]

1#

原标题:Spring认证中国教育管理中心-SpringDataMongoDB教程六(内容来源:Spring中国教育管理中心)

JSON模式类型

下表显示了支持的JSON架构类型:

untyped是由所有类型化架构类型继承的泛型类型。它为untyped类型化架构类型提供所有架构属性。

有关更多信息,请参阅$jsonSchema。

11.6.8.流畅的模板API

MongoOperations当涉及到与MongoDB的更多低级交互时,该接口是核心组件之一。它提供了广泛的方法,涵盖了从集合创建、索引创建和CRUD操作到更高级功能(例如Map-Reduce和聚合)的需求。您可以为每个方法找到多个重载。它们中的大多数涵盖了API的可选或可为空的部分。

FluentMongoOperations为通用方法提供更窄的接口,MongoOperations并提供更易读、更流畅的API。入口点(insert(…)、find(…)、update(…)和其他)遵循基于要运行的操作的自然命名模式。从入口点开始,API旨在仅提供依赖于上下文的方法,这些方法导致调用实际MongoOperations对应方的终止方法——all以下示例中的方法:

ListSWCharacterall=ops.find(SWCharacter.class).inCollection("star-wars").all();

如果使用类名SWCharacter定义集合

Document或使用类名作为集合名,则跳过此步骤,这很好。

有时,在MongoDB中集持有不同的类型,如实体Jedi的集合内SWCharacters。要为Query和返回值映射使用不同的类型,您可以使用as(Class?targetType)不同的映射结果,如以下示例所示:

ListJediall=ops.find(SWCharacter.class).as(Jedi.class).matching(query(where("jedi").is(true))).all();

查询字段根据SWCharacter类型进行映射。

结果文档被映射到Jedi.

您可以通过提供目标类型直接将投影应用于结果文档as(Class?)。

使用投影允许MongoTemplate通过限制对投影目标类型所需字段的实际响应来优化结果映射。只要Query本身不包含任何字段限制并且目标类型是封闭接口或DTO投影,这适用。

可以检索单个实体和检索多个实体作为一个之间切换List或Stream通过终止方法:first(),one(),all(),或stream()。

使用编写地理空间查询时near(NearQuery),终止方法的数量将更改为仅包括对geoNear在MongoDB中运行命令有效的方法(将实体作为GeoResult内获取GeoResults),如以下示例所示:

GeoResultsJediresults=mongoOps.query(SWCharacter.class).as(Jedi.class).near(alderaan)//NearQuery.near(-73.,40.78).maxDis….all();

11.6.9.Kotlin的类型安全查询

Kotlin通过其语言语法和扩展系统支持特定领域的语言创建。SpringDataMongoDB附带一个Kotlin扩展,用于Criteria使用Kotlin属性引用来构建类型安全查询。使用此扩展的查询通常受益于提高的可读性。大多数关键字Criteria都有匹配的Kotlin扩展名,例如inValues和regex。

考虑以下解释类型安全查询的示例:

importorg.springframework.data.mongodb.core.query.*mongoOperations.findBook(Query(Book::titleisEqualTo"Moby-Dick"))mongoOperations.findBook(Query(titlePredicate=Book::titleexiststrue))mongoOperations.findBook(Query(Criteria().andOperator(Book::pricegt5,Book::pricelt10)))//BinaryoperatorsmongoOperations.findBinaryMessage(Query(BinaryMessage::payloadbits{allClear(0b)}))//NestedProperties(i.e.referto"book.author")mongoOperations.findBook(Query(Book::author/Author::nameregex"^H"))

isEqualTo()是一个接收器类型的中缀扩展函数KPropertyT,返回Criteria.

对于按位运算符,传递一个lambda参数,您可以在其中调用Criteria.BitwiseCriteriaOperators.

要构造嵌套属性,请使用/字符(重载运算符div)。

11.6.10.其他查询选项

MongoDB提供了多种将元信息(如注释或批量大小)应用于查询的Query方法。直接使用API有几种方法可以用于这些选项。

Queryquery=query(where("firstname").is("luke")).

分享 转发
TOP
发新话题 回复该主题