Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Play框架中,Morphia和MongoDB模块之间的性能差异是什么?_Mongodb_Playframework_Morphia - Fatal编程技术网

在Play框架中,Morphia和MongoDB模块之间的性能差异是什么?

在Play框架中,Morphia和MongoDB模块之间的性能差异是什么?,mongodb,playframework,morphia,Mongodb,Playframework,Morphia,play框架中的Morphia和MongoDB模块都是MongoDB Java驱动程序的包装器 但我注意到Morphia在查询时并没有直接给出Java列表。它给了我一个叫做查询的复杂对象。在这个对象上,我必须调用方法asList(),这会使它迭代查询中的每个元素并生成一个列表。我认为在大多数情况下,当我需要Java列表时,这会对性能产生影响。我想知道为什么Morphia在从mongodb数据库获取数据时不生成列表。原因是它可以让您决定如何使用数据。如中所示,您只能通过get()检索第一个对象,或

play框架中的Morphia和MongoDB模块都是MongoDB Java驱动程序的包装器


但我注意到Morphia在查询时并没有直接给出Java列表。它给了我一个叫做查询的复杂对象。在这个对象上,我必须调用方法asList(),这会使它迭代查询中的每个元素并生成一个列表。我认为在大多数情况下,当我需要Java列表时,这会对性能产生影响。我想知道为什么Morphia在从mongodb数据库获取数据时不生成列表。

原因是它可以让您决定如何使用数据。如中所示,您只能通过get()检索第一个对象,或者通过asKeyList()检索id列表。他们承认,对于大型集合,使用as List()可能代价高昂

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

如果您将大量重用查询对象,并且不会返回大量数据集(无论如何,您不应该这么做),那么这将非常有用