那么标题是自我说明的.但是,让我更好一点.
首先,我使用Mongoid,一个Gem使用MongoDB与rails应用程序.
首先,我使用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>]