【发布时间】:2020-05-22 10:58:44
【问题描述】:
我在 nodejs 中使用猫鼬。我正在尝试查询一些包含由引用对象组成的列表的字段。我创建了两个架构
飞行员
var PilotSchema = new mongoose.Schema({
races: [{type: mongoose.Schema.Types.ObjectId, ref: 'Race'}],
});
种族
var RaceSchema = new mongoose.Schema({
start_ms: Number,
});
这里我只写了相关的字段。
在比赛模式中,我有一个键 start_ms,它以毫秒为单位指示比赛开始的日期,在 PilotSchema races 字段中,我保存了对许多比赛的引用。
我想做的是:
- 以毫秒为单位获取未来的日期 (my_date)
- 检索所有在间隔(my_date - 2_hours,my_date + 2_hours)内没有比赛的飞行员
我试着做一个例子来更好地解释。
我的日期:2020 年 2 月 23 日 - 12:00:00(以毫秒为单位),
在试验场races 我有很多对RaceSchema 的引用,在每个引用的对象中都有比赛开始的时间。
现在查询 Pilots 集合,我想检索他们 races 字段中没有在 (Feb 23 2020 - 10:00:00 - Feb 23 2020 - 14:00:00) 期间开始的比赛的所有飞行员
我尝试使用此查询但没有用
races: {$not:
{$elemMatch:
{start_ms:
{ "$gt" : min_time, "$lt" : max_time }
}
}
}
在哪里
min_time, max_time = my_date - 2_hours, my_date + 2_hours
实际上我不知道该怎么做,我看到要检索间隔中的数字,我可以使用 $gt 和 $lt 但我不明白如何查询尊重的引用对象数组这个具体的条件。
【问题讨论】: