2016-04-22 7 views
0

Я пытаюсь получить запрос, работающий для получения сгруппированных данных из одной схемы. Схема выглядит так:Группировка запросов в Mongoose

Message: { 
sender: objectId, 
recipient: objectId, 
message: String 
posted: Date 
} 

Каждый документ является простым сообщением. Разговор будет простым запросом сообщений. Теперь я хотел бы получить последние X разговоров с последним сообщением.

Model.find({ 
'$or': [ 
    { 
    sender: userId 
    }, 
    { 
    recipient: userId 
    } 
] 
}, fields, { 
    skip: (_page - 1) * PAGE_SIZE, 
    limit: PAGE_SIZE 
}, _cb); 

Как бы применить группировку?

спасибо.

ответ

0

Скажите, что агрегат соответствует счету здесь. Запустите следующий трубопровод, чтобы получить последний сеанс X, имея в виду $skip + $limit Sequence Optimization:

var pipeline = [ 
    { 
     "$match": { 
      "$or": [ 
       { "sender": userId }, 
       { "recipient": userId } 
      ] 
     } 
    }, 
    { "$sort": { "posted": -1 } }, 
    { "$limit": PAGE_SIZE }, 
    { "$skip": (_page - 1) * PAGE_SIZE }  
] 
Model.aggregate(pipeline, _cb); 
+0

спасибо, но это не работает. Я предполагаю, что мне нужно свойство $ group, определяющее, что для агрегирования – damien