在Mongoose中对查询进行分组

时间:2016-04-22 12:05:30

标签: node.js mongodb

我正在尝试使查询工作以从单个架构中获取分组数据。架构看起来像那样

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);

我如何应用分组?

谢谢。

1 个答案:

答案 0 :(得分:0)

会说聚合符合这个法案。请记住$skip + $limit Sequence Optimization

,运行以下管道以获取最后一个X对话
var pipeline = [
    {
        "$match": {
            "$or": [
                { "sender": userId },
                { "recipient": userId }
            ]
        }
    },
    { "$sort": { "posted": -1 } },
    { "$limit": PAGE_SIZE },
    { "$skip": (_page - 1) * PAGE_SIZE }    
]
Model.aggregate(pipeline, _cb);