2012-02-27 8 views
3

문서의 메타 데이터를 문서 자체 또는 별도의 컬렉션에 저장하는 가장 좋은 방법은 무엇입니까?mongo 스토어 문서 메타 데이터

이 같은 데이터가 수집 함께 일하고 :

나는 누가 이러한 변경을 수행 할 때의 로그를 유지해야하지만 각 메타 데이터를 추가해야하는 경우 나 확실하지 않다
{ 
    status: { 
     joined: Date, 
     retired: [{ 
      on: Date, 
      comment: String, 
      reinstated: { 
       on: Date, 
       comment: String 
      } 
     }], 
     suspended: [{ 
      on: Date, 
      comment: String, 
      reinstated: { 
       on: Date, 
       comment: String 
      } 
     }], 
     //..... 

요소 또는 로그와 같은 콜렉션을 가질 수 있습니다.

// Log collection 
{ 
    by: UserId, 
    on: Date, 
    verb: String, 
    object: ObjectId, 
    comment: String 
} 

답변

1

나는 몇 가지 이유에 대한 문서와 메타 데이터를 저장하는 것입니다 : 당신이 함께 문서와 메타 데이터를 유지하는 경우

1.It 뜻이 더 자연스럽게 보인다. 당신이 문서를로드 할수 있도록 팝업

당신은 당신의 문서를 유지하기 위해 문서에서 쉽게 exclude 메타 데이터는 메타 데이터가 필요하지 때 불 수 :

db.items.find({ }, { metadata : 0 }); 

3.You 수있는 쉬운 사용 페이징 조각을 통해 retrieve 메타 데이터 :

db.items.find({}, {metadata:{$slice: [20, 10]}}) // skip 20, limit 10 

그러나, 마음에 계속 :

문서의

1.Size 제한은 16 MB입니다 당신이 metadat을 많이 가지고 계획 그래서 만약 별도의 컬렉션으로가는 것이 좋습니다. 그러나 나는 대개 임베딩에서 시작하여 나중에 데이터가 커지면 별도의 컬렉션으로 마이그레이션합니다. 2. 그리드와 같은 모든 문서에 대해 메타 데이터를 표시해야하는 경우로드하고 페이지를 적용하는 데 어려움이있을 수 있습니다.

+0

그래서 (보조 기능으로) 로그 수집 및 데이터 복제를 권장하는 메타 데이터를 사용하여 다양한 컬렉션 (예 : 사용자, 공급 업체, 고객)의 메타 데이터 기록을 표시 할 수 있습니까? –

+0

메타 데이터 히스토리를 표시하려면 별도의 컬렉션을 갖는 것이 좋지만 원본 문서에 가장 최근의 메타 데이터를 유지하는 것이 좋습니다. – Barrie