Ruby 是否有任何mongodb ORM允许您使用别名字段?

Ruby 是否有任何mongodb ORM允许您使用别名字段?,ruby,node.js,mongodb,orm,Ruby,Node.js,Mongodb,Orm,我刚才看了这个, 谈话中提出的一个建议是:在将被多次复制的文档中,尽量使字段名尽可能小: 通过始终使用短字段名作为 惯例。随着时间的推移,这将帮助您节省内存 选择“u”而不是“publicationUrl”。如果你说的是数百万行,这是有道理的。然而,存在着很大的可读性问题。很明显,该值是一个url,但它是什么类型的url 不过,这在ORM中可能是可以解决的。是否有任何与MongoDb接口的ORM允许您说db中的“u”将映射到代码中的“publicationUrl”?当代码中有a.u这样的东西时,

我刚才看了这个,

谈话中提出的一个建议是:在将被多次复制的文档中,尽量使字段名尽可能小:

通过始终使用短字段名作为 惯例。随着时间的推移,这将帮助您节省内存

选择“u”而不是“publicationUrl”。如果你说的是数百万行,这是有道理的。然而,存在着很大的可读性问题。很明显,该值是一个url,但它是什么类型的url

不过,这在ORM中可能是可以解决的。是否有任何与MongoDb接口的ORM允许您说db中的“u”将映射到代码中的“publicationUrl”?当代码中有
a.u
这样的东西时,可读性很差
article.u
也好不到哪里去


(Ruby和node.js标记就在那里,因为它们是我在mongo中使用的语言。请随意添加标记。)

每个名称都有getter和setter。不幸的是,virtuals不能用于查询和其他服务器端操作,如MapReduce。讨论还建议使用别名,这似乎可以解决查询问题,但我怀疑它在更复杂的服务器端操作中也会遇到问题。

Doctrine MongoDB ODM允许您为字段设置别名,而您的对象(包括getter和setter)可以保持可读性,例如:

/**@String(name=“pUrl”)*/ 私人$publicationUrl


使用Ruby ORM很容易做到这一点。下面是一个直接来自以下内容的示例:


我在很多项目上使用过Mongoid(尽管都是小项目),并且非常喜欢使用它。医生真的很棒,文档中也有关于性能的部分。

我不知道ruby和node.js有什么,但我的2美分是,
u
publicationUrl
之间的差距非常小,通常情况下,你要么交换空间,要么交换速度,因为你必须为大量收藏提供别名功能和高负载站点。我宁愿多交换几个字节,也不愿处理应用程序。我曾在一个项目中工作过,由于数据量大(每晚生成数十亿条记录),需要使用单字符和双字符字段名。从一开始,我们就用符号给名称加上别名,并使用哈希将符号映射到字段名。这是可以接受的,但我们也坚持使用用于Ruby的MongoDB驱动程序,没有使用ORM。@cfeduke啊,这似乎是一个不错的选择,thanks@Sammaye但是在ORM方面,
myHugeVariable
实际上与
m
相同。但在数据库中,它们并不特别适用于处理许多记录的情况。她的观点是,当你开始消耗内存时,字段名可能会成为一个问题。事实上,它们可以,例如,
my_awesome\u field\u that\u really\u big
会极大地消耗内存,但如果你正确设置网络,相对较小的内容之间的差异……很小。当然,嵌套子文档的情况会发生变化。你必须记住,对于你的应用程序取出的每个文档(取决于这里的内存管理),它需要存储两个哈希副本,一个是原始映射,一个是新映射,然后需要翻译,等等,这就像制作两个额外的层。
class Band
  include Mongoid::Document
  field :n, as: :name, type: String
end

band = Band.new(name: "Placebo")
band.attributes #=> { "n" => "Placebo" }

criteria = Band.where(name: "Placebo")
criteria.selector #=> { "n" => "Placebo" }