如何在MongoDB中获取两个不同日期和时间之间的数据
[
{
"key":"2",
"start_date": "2023-01-03T03:30:00.000Z",
"end_date": "2023-01-03T05:30:00.000Z",
},
{"key":"1",
"start_date": "2023-01-04T03:30:00.000Z",
"end_date": "2023-01-04T05:30:00.000Z",
},
{
"key":"1",
"start_date": "2023-01-05T03:30:00.000Z",
"end_date": "2023-01-05T05:30:00.000Z",
}
]
db.collection.find({
{"key":"2"},
$or: [
{
start_date: {
$gte: "2023-01-04T04:30:00.000Z",
$lte: "2023-01-04T05:00:00.000Z"
}
},
{
end_date: {
$lte: "2023-01-04T05:00:00.000Z",
$gte: "2023-01-04T04:30:00.000Z"
}
}
]
})
我在数据库中有两个集合星期一上午10点到晚上11点星期二上午10点到晚上11点星期五上午11点到晚上12点我将如何得到结果,如果我找到星期一上午10:30到上午10:45,我想btwn时间的结果也。查询应返回-
[{
"key":"2",
"start_date": "2023-01-04T03:30:00.000Z",
"end_date": "2023-01-04T05:30:00.000Z",
}]
2条答案
按热度按时间up9lanfz1#
密钥2的开始日期为“2023-01- 03 T03:30:00.000Z”,结束日期为“2023-01- 03 T05:30:00.000Z”,因此如果您查询
这显然与您应用的过滤器不匹配,您必须从“2023-01- 03 T03:30:00.000Z”开始日期,还请使用$和运算符。$或运算符将匹配任何开始日期或结束日期。但如果您想获得同时匹配这两个条件的记录,则必须使用$和。
vuktfyat2#
这不是一个答案,但把它作为评论有点困难。
您需要清楚地定义“两个不同日期和时间之间”的含义。当您的数据包含
start_date
和end_date
,并且您的查询也包含日期范围(即开始和结束)时,您可以有6个不同的条件。下表显示了这些条件:你需要定义它们中的哪一个被认为是真和假。条件(1)和(6)肯定是
false
,但其他的呢?在高级情况下,您还必须考虑缺少
start_date
或end_date
的文档。