有没有mongodb ORM允许你使用别名字段?

时间:2012-12-31 21:40:44

标签: ruby node.js mongodb orm

我刚看了这个: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的语言。随意添加标签。)

3 个答案:

答案 0 :(得分:2)

每个this discussionMongoose 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