2010-11-22 54 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' 
     } 
    ] 

我想顯示分頁有序日誌條目對於給定的日誌。

能用mongo從這樣的結構中提取那些嗎?

如果不是我應該有一個日誌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 2010-11-22 09:53:07

+0

@coulix:如果使用['$ push'運算符](http://www.mongodb.org/display/DOCS/Updating#Updating-%24push)將新日誌條目添加到日誌中,日誌條目將爲按插入時間排序。如果您需要其他排序方式,除日期排序外,最好將日誌條目存儲在單獨的集合中。 – 2010-11-22 10:10:19