在嵌套数组中查找mongodb

时间:2018-10-31 14:59:15

标签: mongodb

在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"
                    },
                }
            ]
        }
    ]

现在,我想查询startDateendDate之间的星期一的所有可用服务。

我尝试了这段代码,但是结果是一个空数组,而不是我的文档。

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中,但是我找不到执行查询的正确方法。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我发现了问题。

'businessDay.id'期望使用Int32,而parseInt(req.query.day)可以解决问题。