2010-11-22 4 views
0

나는 임베디드 로그 목록과 로그 북 문서가 :몽고 수집 문서 조직 및 쿼리

{ 
    type:'logbook', 
    name:'my book', 
    userRef:2, 
    cdate: ...., 
    logs: [ 
     { 
      color: 'red', 
      weight: 200, 
      cdate: ..., 
      foo: 'bar' 
     }, 
     { 
      color: 'blue', 
      weight: 100, 
      cdate: ..., 
      foo: 'bar' 
     }, 
     { 
      color: 'green', 
      weight: 240, 
      cdate: ..., 
      foo: 'bar' 
     } 
    ] 

나는 주어진 일지에 대해 매겨진 주문 로그 항목을 보여 드리고자합니다.

이러한 구조에서 몽고로 추출 할 수 있습니까?

대신 로그 용 logEntries 컬렉션이 있어야합니까?

감사

답변

1

당신은 field selection를 사용하여 검색 할 문서의 일부를 지정할 수 있습니다. 배열 필드의 일부를 선택하려면 예를 들어, $slice operator을 사용할 수 있습니다 : 삽입 순서 이외의 로그 항목의 분류는 클라이언트 측을 수행해야합니다

// select the name and a range of log entries from the document 
db.logbooks.find({ name: "my book" }, { name: 1, logs: { $slice: [10, 5] } }) 

참고.

+0

윙윙 거리다. 나는 그것을 계속 유지하기를 원한다면 어쩌면 내가 로그 북 문서를 업데이트/저장할 때마다 쓰기 전에 logbook.logs를 정렬해야한다. – coulix

+0

@coulix : ['$ push' 연산자] (http://www.mongodb.org/display/DOCS/Updating#Updating-%24push)를 사용하여 로그 북에 새 로그 항목을 추가하면 로그 항목이 삽입 시간순으로 정렬. 다른 정렬 방법이 필요하면 날짜 정렬 외에 별도의 컬렉션에 로그 항목을 저장하는 것이 좋습니다. –