【问题标题】:What is the performance difference between Morphia and MongoDB Module in Play framework?Morphia 和 MongoDB Module in Play 框架在性能上有什么区别?
【发布时间】:2011-06-28 08:59:28
【问题描述】:
Morphia 和 MongodDB Module in play 框架都是 MongoDB 的 Java 驱动程序的包装器。
但我注意到 Morphia 在查询时并没有直接给出 Java 列表。它给了我一个名为 Query 的复杂对象。在这个对象上,我必须调用 asList() 方法,这会导致它遍历 Query 中的每个元素并生成一个列表。我认为当我大部分时间需要 Java 列表时,这会对性能产生影响。我想知道为什么 Morphia 在从 mongodb 数据库中获取数据时不生成 List。
【问题讨论】:
标签:
mongodb
playframework
morphia
【解决方案1】:
原因是它可以让您决定您想要数据的方式。如wiki 中所见,您只能通过 get() 检索第一个对象,或通过 asKeyList() 检索 id 列表。 他们承认使用 as List() 对于大型集合来说可能会很昂贵。
据我了解,其背后的原因是重用了 Query 对象。它们允许您构建一个复杂的查询对象(带有过滤器等)并在需要时检索结果。您甚至可以从同一个查询中检索不同的结果集,因为列出的方法(asList 等)不会影响查询对象。
如果您将多次重用查询对象,并且不会返回大量数据集(无论如何您不应该太高兴地这样做),这可能会很有用。