2010-11-22 51 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