1

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"} ]
4

1 回答 1

0

用空哈希或零预先填充没有意义:当您插入真实数据时,文档将展开。

你的第三个版本看起来更像它。尽管在插入真实评论时清除虚拟数据似乎并非易事。

您也可以将足够大的文本块插入一个特殊字段,然后在插入评论时将其删除。像这样的东西:

db.posts.insert({
  comments: [],
  padding: 'lorep ipsum ... x N'
})


db.posts.update(query, 
                {$push: {comments: comment_data},
                 $unset: padding})
于 2013-03-20T09:25:28.827 回答