这是我目前正在处理的查询:
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 }
}
]