0

我的文件如下所示:

{
    "_id": {
        "$oid": "60841a6047fda45b6391dbce"
    },
    "title": "Week 1",
    "dates": [{
        "start": {
            "$date": "2021-04-26T00:00:00.000Z"
        },
        "end": {
            "$date": "2021-05-02T00:00:00.000Z"
        }
    }, {
        "start": {
            "$date": "2021-05-10T00:00:00.000Z"
        },
        "end": {
            "$date": "2021-05-16T00:00:00.000Z"
        }
    }]
}

现在,我尝试在这些范围之一中查找给定日期的文档。(预期结果是没有文档,但此查询正在返回我的文档。)

{
    $and: [
        {'dates.start': {$lte: ISODate('2021-05-05')}},
        {'dates.end': {$gte: ISODate('2021-05-05')}}
   ]
}

如何查询一个对象中的开始和结束日期是否包含我的日期?

4

1 回答 1

1

$elemMatch运算符匹配包含数组字段的文档,其中至少一个元素匹配所有指定的查询条件,

{
  dates: {
    $elemMatch: {
      start: { $lte: ISODate("2021-05-05") },
      end: { $gte: ISODate("2021-05-05") }
    }
  }
}

操场

于 2021-04-24T13:55:53.077 回答