关于mongoDB,那么一切都很清楚,并且在这个主题上写了很多。使用javascript语法(first_name甚至更好" fn"以节省空间)。 但是scala代码中的工作呢(我使用camelCase)。例如,我会编写这样的层次结构
case class User (... personalInfo: PersonalInfo, ...)
case class PersonalInfo (... fullName: FullName, ...)
case class FullName (firstName: String, middleName: Option [String], lastName: String)
如果我想简单地使用mongoDB(即使用JSON Macro Inception并且不编写自定义读者和编写者),我必须更改这样的类
case class User (... p_inf: PersonalInfo, ...)
case class PersonalInfo (... f_nm: FullName, ...)
case class FullName (fn: String, mn: Option [String], ln: String)
但是这段代码对我来说看起来很难看(因为减少了单词和整个风格)
val firstName = user.p_inf.f_nm.fn
我要为字段制作另一个常量,然后在javascript / html代码中使用(此处此样式适用),例如
trait JsFields {
val jsFirstName = "p_inf.f_nm.fn"
}
user.scala.html:
import ... JsFields._
<input name="@jsFirstName" />
所以MongoDB和JS / html样式是合适的,但业务逻辑不是。 请将最好的命名实践与Scala / Html / JS一起编写MongoDB / Play Framework。请提供示例(例如上面的字段)。
答案 0 :(得分:0)
Mongo 3使用有线Tiger引擎增加压缩,因此您可能不再需要或不想使用模糊名称。
https://comerford.cc/2014/11/12/mongodb-2-8-new-wiredtiger-storage-engine-adds-compression/
实施它的实际JIRA票证: https://jira.mongodb.org/browse/SERVER-164