大家好!
我有这种类型的记录:
{
start: 2015-03-27T15:00:00.000Z,
end: 2015-03-27T17:00:00.000Z
}
并尝试在数据库中查找过渡期。
{
start: 2015-03-27T15:30:00.000Z,
end: 2015-03-27T16:00:00.000Z
}
我做调度系统。我在那里度过了一段时间。
答案 0 :(得分:0)
我相信您正在尝试查找具有重叠日期范围的文档。换句话说,end
或{
"_id" : ObjectId("56f692730c96eddb0a2c287e"),
"start" : "2015-03-27T15:00:00.000Z",
"end" : "2015-03-27T17:00:00.000Z"
}
{
"_id" : ObjectId("56f6928c0c96eddb0a2c287f"),
"start" : "2015-03-27T16:00:00.000Z",
"end" : "2015-03-27T27:00:00.000Z"
}
日期落在给定日期范围之间的任何文档。
你可以通过一点点匹配和逻辑来实现这一点。
假设我的收藏中有两个文件
var startDate = "2015-03-27T20:00:00.000Z";
var endDate = "2015-03-27T21:00:00.000Z";
var findOverlapingDates = function(startDate, endDate){
return db.collection.find({
$or: [
{$and: [
{start:{$gte: startDate}}, {start:{$lte: endDate}}
]},
{start:{$lte: startDate}, end:{$gte: startDate}}
]
});
};
printjson(findOverlapingDates(startDate, endDate).toArray());
当我执行以下代码时
[
{
"_id" : ObjectId("56f6928c0c96eddb0a2c287f"),
"start" : "2015-03-27T16:00:00.000Z",
"end" : "2015-03-27T27:00:00.000Z"
}
]
我得到了
start
对于给定的日期范围,哪个是重叠文档。希望这一切都有道理。为了获得最佳效果,我建议您在end
和#slide3 {
background-color: #fff;
color: #333333;
height: 100%;
padding: 20px;
overflow: hidden;
}
字段都有索引。