ruby-on-rails – 在RoR3上的Mongoid:1)如何返回查询的特定字段? 2)需要什么inverse_of?

那么标题是自我说明的.但是,让我更好一点.
首先,我使用Mongoid,一个Gem使用MongoDB与rails应用程序.

#1)我有一个大集合,它有关于地图的信息.地图嵌入了大量的图块,每个图块引用地形集合,用户集合,还有一些其他信息.因此,如果我从地图获取所有的图块,我将会有一个非常大的结构.但是,我想缓存一个只包含地形信息的矩阵的结构.为了做到这一点,我选择所有的瓷砖(因此,它们所有不需要的信息),并且只使用地形场.如何只选择Mongoid的地形字段?我尝试用几种方式进行操作,但是我没有设法做到这一点(顺便说一下,为了举例说明,我使用“Map.first.tiles”行访问tiles数组).

#2)嗯..我已经在这里了,所以,为什么不问这个问题.我应该真的在我的模型上使用inverse_of字段吗?我没有在任何地方使用它,一切似乎都是完美的.我不明白为什么需要它,因为它是很直接的确定放在哪里,它们是什么相反的.

提前致谢.
费尔南多.

解决方法

一般来说,只能在一个mongoid查询中选择一个或多个属性
Map.only(:name).all

我不会打扰inverse_only,除了Mongoid需要帮助找出课程.一般来说,不需要.

如果您只需返回嵌入式文档中的某些属性,则需要使用完整路径:

Map.first.tiles
 => [#<Tile _id: 4e1e486042f5bc06e7000002,name: "Earth",distance: 34>]

Map.only("tiles.name").first.tiles
 => [#<Tile _id: 4e1e488742f5bc06e7000003,distance: nil>]

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...