我刚看了这个:http://blog.mongodb.org/post/38467892360/mongodb-schema-design-insights-and-tradeoffs-from
谈话中提出的一个建议是:在多次复制的文档中,尽量使字段名称尽可能小:
通过始终使用短字段名称来减少收集大小 惯例。这将有助于您节省内存。
在“publicationUrl”上选择“u”。如果你在谈论数百万行,那就没有意义了。但是,那里存在很大的可读性问题。可能很明显,该值是一个网址,但它是什么类型的网址?
这可能在ORM中可以解决。与MongoDb接口的任何ORM是否允许您说db中的'u'将映射到代码中的'publicationUrl'?当你在代码中有a.u
这样的东西时,可读性非常差; article.u
并没有好多少。
(Ruby和node.js标签在那里,因为这些是我使用mongo的语言。随意添加标签。)
答案 0 :(得分:2)
每个this discussion,Mongoose allows for virtual field名称包含getter和setter。不幸的是,虚拟不能用于查询和其他服务器端操作,例如map-reduce。讨论还提出了this plugin别名,这似乎解决了查询问题,但我怀疑它也会遇到更复杂的服务器端操作问题。
答案 1 :(得分:1)
使用Ruby ORM Mongoid很容易。以下是docs:
的示例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" }
我在很多项目中使用了Mongoid(虽然都是小项目)并且非常喜欢使用它。文档真的很棒,文档中也有关于性能的部分。
答案 2 :(得分:0)
Doctrine MongoDB ODM允许您为字段设置别名,而包含getter和setter的对象可以保持可读性。
/ ** @String(name =“pUrl”)* / private $ publicationUrl;
Annotations Reference — Doctrine MongoDB ODM 1.0.0-BETA2 documentation — Field