4

我刚刚看了这个:http ://blog.mongodb.org/post/38467892360/mongodb-schema-design-insights-and-tradeoffs-from

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

通过始终使用短字段名称作为约定来减少集合大小。这将帮助您随着时间的推移节省内存。

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

不过,这在 ORM 中可能是可以解决的。与 MongoDb 接口的任何 ORM 是否允许您说数据库中的“u”将映射到代码中的“publicationUrl”?当你有类似a.u代码的东西时,可读性很差;article.u也好不了多少。

(有 Ruby 和 node.js 标签,因为这些是我使用 mongo 的语言。随意添加标签。)

4

3 回答 3

2

根据这个讨论Mongoose 允许使用 getter 和 setter 的虚拟字段名称。不幸的是,虚拟不能用于查询和其他服务器端操作,例如 map-reduce。讨论还建议使用这个别名插件,这似乎解决了查询问题,但我怀疑它也会在更复杂的服务器端操作中遇到问题。

于 2012-12-31T23:41:24.867 回答
1

这很容易使用 Ruby ORM Mongoid这是直接来自文档的示例:

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,并且非常喜欢使用它。文档真的很棒,文档中也有一个关于性能的部分。

于 2013-01-02T05:05:09.920 回答
0

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

/** @String(name="pUrl") */ private $publicationUrl;

注释参考 — Doctrine MongoDB ODM 1.0.0-BETA2 文档 — 字段

于 2013-01-01T12:10:48.073 回答