php怎樣在Mongodb中查詢一個每年都重複的議程呢?

來源:互聯網
上載者:User
需求是查詢一段日期內的議程,有的議程是每年(月、日)重複的,怎樣在一次find中取到期間內的議程呢?
重複的意思是,添加的今年5月1日的議程,我查詢明年4到5月議程的時候,還是可以查到他
希望能夠給個思路

回複內容:

需求是查詢一段日期內的議程,有的議程是每年(月、日)重複的,怎樣在一次find中取到期間內的議程呢?
重複的意思是,添加的今年5月1日的議程,我查詢明年4到5月議程的時候,還是可以查到他
希望能夠給個思路

如果有這種需求,那就應該在存資料的時候多存一些欄位用來表達“月”和“日”的資訊,這和 php 沒關係,只是 mongodb 資料結構的設計問題。

比如加一個欄位:

{  "repeat_date": {    "month": 5,    "day": 1  }}

查詢的時候就可以寫:

// 找到所有月份為 5 的db.foo.find({"repeat_date.month": 5})

這個 repeat_date 欄位僅在每年重複的議程上添加,對於不重複的議程不需要添加。

如果需要同時查出某個時間段中所有議程,包括每年重複的議程,可以這樣查詢:

// 假設每個議程都有一個類型為 `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      }    }  ]})
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.