在MongoDB中,我的服务的数据结构如下:
"serviceInfo" : {
"title" : "Lorem ipsum",
"options" : [
{
"startDate" : ISODate("2018-10-01T00:00:00.000Z"),
"endDate" : ISODate("2018-10-31T00:00:00.000Z"),
"availabilities" : [
{
"businessDay" : {
"id" : 1,
"name" : "Monday"
},
}
]
}
]
现在,我想查询startDate
至endDate
之间的星期一的所有可用服务。
我尝试了这段代码,但是结果是一个空数组,而不是我的文档。
db.collection('services').find({
'serviceInfo.options': {
$elemMatch: {
'startDate': { $lte: new Date(req.query.date) },
'endDate': { $gte: new Date(req.query.date) },
'availabilities': {
$elemMatch: {
'businessDay.id': req.query.day
}
}
}
}
}).toArray()
我猜我的问题出在嵌套数组availabilities
中,但是我找不到执行查询的正确方法。
预先感谢您的帮助。
答案 0 :(得分:0)
我发现了问题。
'businessDay.id'
期望使用Int32,而parseInt(req.query.day)可以解决问题。