我使用Mongo及其Java驱动程序和Morphia。我正在映射这个类:
public class Transaction {
@Id
private ObjectId id;
private String transactionUniqueIdentifier;
}
我在控制台中看到Mongo以{transactionUniqueIdentifier: "xjeer"}
这是否意味着我应该使用较短的属性名称(“uuid”而不是“transactionUniqueIdentifier”)来获取较小的数据库?或者Mongo中有一个设置可以解决这个问题(在内部创建更短的名字......) 任何指针都会受到赞赏,thx。
答案 0 :(得分:2)
MongoDB中没有字段名称的内部映射。
是否创建更短的名称取决于许多因素,包括Map Reduce中文档的使用,文档的整体大小以及服务器上的硬件。
例如,如果您使用transactionUniqueIdentifier
而不是uuid
在Map Reduce中更容易处理文档,并且文档非常小(假设每个大约5KB)并且您有SSD(实际上可能不需要)然后,字段名称的缩小变得几乎无用。
有些人认为不是这样,但现实世界的使用要求你有更大的事情需要担心。
但是,如果你有很多长字段的字段,或者你的名字长于transactionUniqueIdentifier
,那么你可能想要缩短它们,否则你可能花费大部分时间来加载来自磁盘的文档的字段名称,而不是加载实际值(因为字段名将大于文档值的总大小)。
有计划压缩字段名称,但是,其他功能已经优先考虑。
答案 1 :(得分:1)
使用morphia,默认情况下,文档属性名称与java字段名称匹配。您可以命名它们,但是您希望使用@Property注释将其序列化为mongodb并提供您想要的任何名称。