我有以下架构:
const UserQualificationSchema = new Schema(
{
user: {
type: mongoose.Schema.Types.ObjectId,ref: 'User',},qualification: {
type: mongoose.Schema.Types.ObjectId,ref: 'Qualification',expiry_date: {
type: Date
}
}
const QualificationSchema = new Schema(
{
fleet: {
type: [String],// Eg ["Fleeta","FleetB","FleetC"]
required: true,}
}
我正在使用表格中的过滤器搜索 UserQualifications,以按车队、资格或到期日期进行搜索。到目前为止,我有以下聚合:
db.UserQualifications.aggregate([{
{
$lookup: {
from: 'qualifications',localField: 'qualification',foreignField: '_id',as: 'qualification',{
$unwind: '$qualification',{
$match: {
$and: [
'qualification.fleet': {
$in: ["Fleet A","Fleet C"],// This works
},expiry_date: {
$lt: req.body.expiry_date,qualification: { // Also tried 'qualification._id'
$in: ["6033e4129070031c07fbbf29"] // Adding this returns blank array
}
]
},}
}])
按车队过滤和到期日期既可以独立也可以组合使用,但是当按资格 ID 添加时,尽管发送的 ID 是有效的,但它返回空白。
我在这里遗漏了什么吗?