$ match和$ lookup不适用于mongodb aggreagate

时间:2019-05-05 06:23:11

标签: mongodb mongoose

我有以下两个收藏

const DashboardSchema = new Schema({
    userId: {
        type: SchemaTypes.ObjectId
    }
}, { toJSON: { virtuals: true }, toObject: { virtuals: true } });

const reportSchema = new Schema({
  userId: Schema.Types.ObjectId,
  seq: Number,
  date: Date
});

我们将为单个用户提供多个报告。我想获取所有基于userId的用户报告

我已经尝试过了

return await Dashboard.aggregate([

          {
            "$match": {
                "userId": "5bb0b0f408458a675419d575"//sample id
            }
        }
        {
            "$lookup": {
                "from": reportSchema.collection.name,
                "let": { "userId": "$userId" },
                "pipeline": [
                    {
                        "$match": {
                            "$expr":
                            {
                                "$eq":
                                    ["$userId", "$$userId"]
                            }
                        }
                    },
                    { "$sort": { "date": -1 } },
                    { "$limit": 10 }
                ],
                "as": "Reports"
            }
        },

    ]);

,但返回null。 有什么想法吗?

0 个答案:

没有答案