这是我的约会Collection :

{ _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") }

我使用聚合得到以下结果

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

这样地:

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

如何填充患者文档

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

需要帮忙吗

推荐答案

With the latest version of mongoose (mongoose >= 3.6), you can but it requires a second query, and using populate differently. After your aggregation, do this:

Patients.populate(result, {path: "patient"}, callback);

更多信息请参见Mongoose APIMongoose docs.

Node.js相关问答推荐

如何使用fluent-json-schema验证模式的所有属性?

无法在我的 node 项目中转让Google Drive v3 API中的所有权

如何在Node js中从MongoDB获取特定数据,使用GET方法?

编辑Mongoose中的对象嵌套数组

Mongoose-不会更新数组中的属性值

在函数上执行 toString 的Typescript 会产生奇怪的字符 (path_1, (0, Promise.writeFile))

TS 后端开发:prismagenerate找不到已安装的@tsed/prisma包

如何使用包含条件正确分页的 sequelize 查询?

使用mongoose 创建新文档并仅取回选定的字段

用户与mongoose 的完美搭配

在 Express.js 中迭代子文档数组

Handlebars:访问已被拒绝解析来自的属性,因为它不是其父级的自己的属性

使用 WebSockets 有服务器成本吗?

来自 Node-aws 的 Dynamo Local:所有操作都失败无法对不存在的表执行操作

构建 vue cli 后如何运行生产站点

如何在 AWS 上的 Amazon Linux AMI 中自动启动 node.js 应用程序?

将 myproject/.npmrc 与注册表一起使用

代理后面的凉亭

Nodejs续集批量更新

使用 node 的内置调试器判断变量?