0
我有一个MongoDB的猫鼬事件的模式,看起来像这样一部分。MongoDB的查询如果嵌套布尔值为true
...
details: {
startDate: String,
endDate: String,
startTime: Number,
endTime: Number,
days: {
monday: Boolean,
tuesday: Boolean,
wednesday: Boolean,
thursday: Boolean,
friday: Boolean,
saturday: Boolean,
sunday: Boolean,
},
},
...
我需要查询那一天正在发生的事件,那就是,有开始日期为当天的活动,或者有在将来的日期在过去日期的开始日期和结束日期的活动,而那个周日在那个特定的日子里是真实的。 例如,每周五举行的欢乐周五活动,开始日期为2017年1月1日,2017年12月31日结束,我如何查询该活动是在每年的每个周五出现的?
这是我应得的,我现在有点迷失。 (使用时刻和猫鼬)
const todayDateISO = moment().startOf('d').add(1, 'd').toISOString();
const todayDay = moment().startOf('d').add(1, 'd').format('dddd');
Event.find({
$or: [
{ 'details.startDate': todayDateISO },
{
$and: [
{
$and: [
{ 'details.startDate': { $lte: todayDateISO } },
{ 'details.endDate': { $gte: todayDateISO } },
],
},
{
// details.days.[day] is true
}
]
},
],
}).sort({ 'profile.startTime': 1 }).exec(),
任何帮助,将不胜感激:)
什么'startDate'和'endDate'(YYYY-MM-DD/DD-MM-YYYY)的格式?他们应该是的'Date'类型 –
@BertrandMartel graphQL没有一个日期类型,它是我用它来查询,所以我把它们保存为ISO字符串,e.g'新的Date()。toISOString()' – alfiepoleon