需求是查询一段日期内的日程,有的日程是每年(月、日)重复的,怎样在一次find中取到期间内的日程呢?
重复的意思是,添加的今年5月1日的日程,我查询明年4到5月日程的时候,还是可以查到他
希望能够给个思路
需求是查询一段日期内的日程,有的日程是每年(月、日)重复的,怎样在一次find中取到期间内的日程呢?
重复的意思是,添加的今年5月1日的日程,我查询明年4到5月日程的时候,还是可以查到他
希望能够给个思路
如果有这种需求,那就应该在存数据的时候多存一些字段用来表达“月”和“日”的信息,这和 php 没关系,只是 mongodb 数据结构的设计问题。
比如加一个字段:
<code class="lang-json">{
"repeat_date": {
"month": 5,
"day": 1
}
}
</code>查询的时候就可以写:
<code class="lang-javascript">// 找到所有月份为 5 的
db.foo.find({"repeat_date.month": 5})
</code>这个 repeat_date 字段仅在每年重复的日程上添加,对于不重复的日程不需要添加。
如果需要同时查出某个时间段中所有日程,包括每年重复的日程,可以这样查询:
立即学习“PHP免费学习笔记(深入)”;
<code class="lang-javascript">// 假设每个日程都有一个类型为 `ISODate` 的 `date` 字段表示日程发生在哪一天
db.schedule.find({
$or: [
{
date: {
$gte: new Date("2014-03-01 00:00:00"),
$lt: new Date("2014-05-01 00:00:00")
},
},
{
"repeat_date.month": {
$gte: 3,
$lt: 5
}
}
]
})
</code>
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号