2013-04-13 6 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 

 Смежные вопросы

  • Нет связанных вопросов^_^