3

我将 Mongo 与本机 Java 驱动程序(没有第 3 方库/ORM)一起使用。我有这个:

public class Release extends ReflectionDBObject {

    //other fields omitted    

    private List<ReleaseDetailsByTerritory> releaseDetailsByTerritory = new ArrayList<ReleaseDetailsByTerritory>();

}

public class ReleaseDetailsByTerritory extends ReflectionDBObject { //...}

如果我想检索具有两个“ReleaseDetailsByTerritory”条目的“Release”条目,并让它们在包含两个 ReleaseDetailsByTerritory 类实例的列表的 Release 类实例中自动实例化,我必须这样做:

releaseColl.setObjectClass(Release.class);
releaseColl.setInternalClass("ReleaseDetailsByTerritory.0", ReleaseDetailsByTerritory.class);
releaseColl.setInternalClass("ReleaseDetailsByTerritory.1", ReleaseDetailsByTerritory.class);
Release r = (Release) releaseColl.findOne();

即我需要专门将嵌入数组的每个潜在元素映射到相应的类。

有没有办法告诉 Mongo 驱动程序我希望嵌入式数组的所有元素和任何元素都映射到某个类?就像是 :

collection.setInternalClass("ReleaseDetailsByTerritory.*", ReleaseDetailsByTerritory.class);

?

谢谢。请不要说“使用 Spring MondoDb 模块或 Morphia”。我想知道这是否可以通过 Mongo 本机 Java 驱动程序实现。

4

1 回答 1

2

查看源代码,我认为这是不可能的。也没有明显的方法可以为您的需要创建便利功能。考虑到大型数组会导致大量内存使用,必须为每个数组元素调用 setInternalClass 几乎不是一种选择。

您可能需要考虑实现自己的“文档”类实现,该类可以满足您的需要,而无需使用诸如 Morphia 之类的完整映射解决方案(这实际上非常优雅,至少比 Spring 更优雅)。

您还可以考虑在 jira.mongodb.org 上打开一个 JIRA 问题并请求此功能。

于 2012-01-13T14:19:56.307 回答