Mongodb在$ lookup中进行排序的问题

时间:2019-07-09 08:18:25

标签: mongodb

这是我目前正在处理的查询:

db.lenses.aggregate([
                    {
                        $lookup: {
                            from: 'treatments',
                            localField: 'treatments.type',
                            foreignField: '_id',
                            as: 'treatments'
                        }
                    },
                    { $unwind: '$treatments' },
                    { $match: { 'treatments.priceList.validityYear': 2019 } },
                    { $sort: { 'treatments.priceList.validityStart': 1 } },
                ]).pretty();

,但当前忽略总计中最后一个$ sort。

我想要实现的结果是对查找集合(而不是镜头集合)进行匹配和排序。

validityStart是一个ISODATE

我在Altas中使用Mongodb。

我正在尝试使用查找管道,但它似乎加入了所有处理,而不仅仅是引用的处理。

编辑

这是镜头系列的架构

lens: Schema = 
    name: { type: String },
    treatments: [
         type: { type: ObjectId, ref: 'treatment', required: true },
         colors: [{ type: ObjectId, ref: 'color' }]
    ]

这是治疗集合的模式,由镜头模式上的treatments.type引用。

treatments: Schema = 
    name: { type: String },
    priceList: [
            {
                buyingPrice: { type: Number, required: true },
                sellingPrice: { type: Number, required: true },
                validityYear: { type: Number, required: true },
                validityStart: { type: Date, required: true },
                validityEnd: { type: Date, required: true }
            }
        ]

0 个答案:

没有答案