相关疑难解决方法(0)

如何在同一语句中使用populate和aggregate?

这是我的预约系列:

{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") }

{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") }

{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") }
Run Code Online (Sandbox Code Playgroud)

我使用聚合来获得以下结果

{date: ISODate("2013-05-13T22:00:00Z"),
patients:[ObjectId("518ee0bc9be1909012000002"),ObjectId("518ee0bc9be1909012000002"),ObjectId("518ee0bc9be1909012000002")] }
Run Code Online (Sandbox Code Playgroud)

像这样:

Appointments.aggregate([
{$group: {_id: '$date', patients: {$push: '$patient'}}},
{$project: {date: '$_id', patients: 1, _id: 0}}
], ...)
Run Code Online (Sandbox Code Playgroud)

我怎样才能填写患者文件,但是它不起作用Appointments.find({}).populate("patient").aggregate......

换句话说,我可以在同一个语句中使用populate和aggregate

请帮忙

mongoose mongodb node.js

44
推荐指数
7
解决办法
5万
查看次数

猫鼬 - 如何分组和填充?

我使用MongoDB和Mongoose作为我的ODM,我正在尝试使用populategroup by在同一语句中进行查询.

这是我的简单文档模型:

var userSchema = new Schema({
    username: String
});

var messageSchema = new Schema({
    from: { type: Schema.ObjectId, ref: 'User' },
    to: { type: Schema.ObjectId, ref: 'User' },
    message: String,
    date: { type: Date, default: Date.now }
});
Run Code Online (Sandbox Code Playgroud)

我只是试图为每个用户收集每条消息,由他与之交谈的每个用户进行分组.我试过这样的:

this.find({ 'to': user })
    .sort({ 'date': 1 })
    .group('from')
    .populate(['from', 'to'])
    .exec(callback);
Run Code Online (Sandbox Code Playgroud)

但是,不幸的是,我的模型没有group方法.你有任何解决方案,让这个工作吗?

谢谢.

javascript mongoose mongodb node.js aggregation-framework

18
推荐指数
2
解决办法
3万
查看次数