3

Morphia 和 MongodDB Module in play 框架都是 MongoDB 的 Java 驱动程序的包装器。

但我注意到 Morphia 在查询时并没有直接给出 Java 列表。它给了我一个名为 Query 的复杂对象。在这个对象上,我必须调用 asList() 方法,这会导致它遍历 Query 中的每个元素并生成一个列表。我认为当我大部分时间需要 Java 列表时,这会对性能产生影响。我想知道为什么 Morphia 在从 mongodb 数据库中获取数据时不生成 List 。

4

1 回答 1

3

原因是它可以让你决定你想要你的数据的方式。正如wiki中所见,您只能通过 get() 检索第一个对象,或通过 asKeyList() 检索 id 列表。他们承认使用 as List() 对于大型集合来说可能代价高昂

据我了解,其背后的原因是重用了 Query 对象。它们允许您构建一个复杂的查询对象(带有过滤器等)并在需要时检索结果。您甚至可以从同一个查询中检索不同的结果集,因为列出的方法(asList 等)不会影响查询对象。

如果您将大量重用查询对象,并且不会返回大量数据(无论如何您都不应该太高兴地这样做),那么这可能很有用。

于 2011-06-28T10:42:14.893 回答