2013-03-20 2 views
1

MongoDB 설명서에 따르면 증가하는 배열은 느리고 가능한 경우 최소화하거나 제거해야합니다.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 = [ { }, 
      { } ] 

또는 0으로 배열을 초기화하는 것으로 충분합니까?

### 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}) 
관련 문제