2013-04-13 207 views
0

以下是我的文檔的樣子。MongoDB子文檔查詢限制元素

{ 
    ID: "XYZ", 
    messages: [ 
     { 
      ID: "AAA", 
      text: "this is a message" 
     }, 
     { 
      ID: "BBB", 
      text: "this is a message" 
     }, 
     { 
      ID: "CCC", 
      text: "this is a message" 
     }, 
     { 
      ID: "DDD", 
      text: "this is a message" 
     }, 
     { 
      ID: "EEE", 
      text: "this is a message" 
     }, 
     { 
      ID: "FFF", 
      text: "this is a message" 
     }, 
     { 
      ID: "GGG", 
      text: "this is a message" 
     } 
    ] 
} 

我想要聚合,並得到例如從CCC消息FFF

{ 
    ID: "XYZ", 
    messages: [ 
     { 
      ID: "CCC", 
      text: "this is a message" 
     }, 
     { 
      ID: "DDD", 
      text: "this is a message" 
     }, 
     { 
      ID: "EEE", 
      text: "this is a message" 
     }, 
     { 
      ID: "FFF", 
      text: "this is a message" 
     } 

    ] 
} 

那麼這怎麼可能?

+0

嘗試使用'$ unwind','$ match',和然後在你的管道中輸入$ group。 – JohnnyHK

+0

我已經這樣做了,這還不足以解決這個問題 –

+0

你可以展示你的嘗試嗎? – JohnnyHK

回答

2

這可以通過使用$ slice操作符來實現。 Check out the mongodb documentation on $slice。 運行您的查詢來獲取文件和使用切片運算符與查詢:

query.slice('messages', [numOfElementsToSkip, numOfElementsToReturn]); 

或多個特定客戶要求:

query.slice('messages', [2, 4]); // Return 4 elements after skipping 2