MongoDB文档说,增长的数组很慢,应该尽可能地减少或消除它。我有一系列子文档(假设这些是对博客文章的评论):
comments = [ {name : "E.D.", date : "2013.03.20", text : "awesome stuff!"},
{name : "J.L.", date : "2013.03.21", text : "tl;dr"} ]
并且它会相当可预测地增长,所以我认为应该从一开始就预先填充效率。但是我需要自己创建子文档:
### I Version
comments = [ { },
{ } ]
或仅用零来初始化数组是否足够?
### II Version
comments = [ 0,
0 ]
(当然,我应该跟踪访问者实际留下的评论数量。)
“评论”的大小可以达到几KB,这会对文档增长产生什么影响?也许我应该创建与最大允许文本大小相同的占位符?
### III Version
comments = [ {name : "Name Surname", date : "1970.01.01", text : "this is a placeholder"},
{name : "Name Surname", date : "1970.01.01", text : "this is a placeholder"} ]
答案 0 :(得分:0)
使用空哈希或零预填充是没有意义的:当您插入实际数据时,文档将会扩展。
你的第三个版本看起来更像它。虽然在插入真实评论时清除虚拟数据似乎并非易事。
您也可以在特殊字段中插入足够大的文本块,然后在插入注释时将其删除。像这样:
db.posts.insert({
comments: [],
padding: 'lorep ipsum ... x N'
})
db.posts.update(query,
{$push: {comments: comment_data},
$unset: padding})