Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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
Ruby on rails 使用Mongoid从DB延迟下载字段,或处理大型文档_Ruby On Rails_Ruby_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails 使用Mongoid从DB延迟下载字段,或处理大型文档

Ruby on rails 使用Mongoid从DB延迟下载字段,或处理大型文档,ruby-on-rails,ruby,mongodb,mongoid,Ruby On Rails,Ruby,Mongodb,Mongoid,我们已经将Mongo数据库设计为高度非规范化的,这导致我们的集合中的许多文档包含非常大的数组,例如一些字段。当然,这会导致从数据库下载的时间过长,因为文档太大了 每当我们需要从数据库中获取一些记录时,我都会使用。只选择我想要的字段,但这需要我在需要之前下载额外的数据,一般来说,在查询文档时,我更需要跟踪最终需要哪些字段 Mongoid是否有一种方法可以简单地将模型中的特定字段定义为应该延迟加载的字段,以便在第一次访问它们时从服务器获取它们?我搜索了Mongoid的文档,看看它是否内置了任何东西,

我们已经将Mongo数据库设计为高度非规范化的,这导致我们的集合中的许多文档包含非常大的数组,例如一些字段。当然,这会导致从数据库下载的时间过长,因为文档太大了

每当我们需要从数据库中获取一些记录时,我都会使用。只选择我想要的字段,但这需要我在需要之前下载额外的数据,一般来说,在查询文档时,我更需要跟踪最终需要哪些字段


Mongoid是否有一种方法可以简单地将模型中的特定字段定义为应该延迟加载的字段,以便在第一次访问它们时从服务器获取它们?我搜索了Mongoid的文档,看看它是否内置了任何东西,但我没有看到任何这样的东西。也许有第三方gem将此功能添加到Mongoid?

Mongoid不支持从服务器延迟加载数据,也不知道有任何插件可以这样做

虽然从技术上讲,您可以将其添加到Mongoid中,但最好还是手动指定
,以便只加载一次所需内容。如果您根据使用情况延迟加载字段,那么每次访问字段时都必须从MongoDB中提取数据,而不是nil


这意味着,如果您在原始文档加载上访问了5个不同的字段,那么您将向MongoDB发送6个查询,这涉及一般的往返/处理,而不是仅在
中指定它。

谢谢。我在一次Mongo会议上与10gen的一些人进行了交谈,他们的建议是,我不应该嵌入如此大量的数据,而应该在另一个集合中为我的一些一对多关系引用文档。