4

我正在使用 mongodb-customer-service-data 示例(可在https://github.com/SpringSource/spring-data-document-examples获得)。

该示例使用 @RelatedDocument 跨数据库关联域对象。它允许存储和更新对象足够好。

但是,我想做一个对 JPA 数据库(在示例 HSQLDB 中)和 MongoDB 都有条件的查询。

这甚至可能吗?有没有任何例子可以证明这是可能的?


与问题没有直接关系的评论:

我的用例是我们的应用程序是一个 Oracle DB,但我们现在开始接收半结构化数据。JPA 实体可由用户在某些限制内过滤,但我们希望将此功能扩展到半结构化数据。

似乎还有相互竞争的技术 QueryDSL 和 EclipseLink,但我找不到任何关于跨数据库进行查询的信息。

在 JPA 中,似乎不可能进行跨数据库查询,因为有不同的 PersistanceUnits 与每个数据库相关联。但是,mongodb cross-store 似乎否定了这个特殊问题。

4

1 回答 1

0

我从未使用过 Spring Data JPA,但如果 JPA 无法做到这一点,我怀疑 Spring Data 是否会提供这样的功能。
不知道你对mongodb cross-store 的理解是什么。所以我会简短地解释一下 mongodb 能做什么和不能做什么。

使用 mongodb,您无法跨多个集合(表)进行查询,因此您无法使用普通的 mongodb 进行连接。所以@RelatedDocument 是 Spring Data 提供的一个特性。相关文档可能是嵌入的(不知道 Spring Data 是否支持这一点),也可能是不同集合(和数据库)中文档的一些简单 DBRef。使用 DBRef,您只能查询 @RelatedDocument 字段,如 _id、集合和数据库,但不能查询实际引用的文档属性。

这表示 mongodb 不允许在单个查询中搜索跨数据库,因为您不能跨集合进行查询,因此您也不能对数据库执行此操作。您拥有的唯一跨商店功能是用于分片集合。有了这个,您可以通过一个 shardkey 将集合分布在多个节点上。MongoDB 可能需要查询所有集合分片以完成您的查询。但除此之外,我不会称之为跨数据库函数,你没有这样的能力。

如果这没有帮助,请更详细地解释您想要做什么。

于 2013-04-21T05:52:50.403 回答