Schedules (collection)
const mongoose = require("mongoose");
const scheduleSchema = new mongoose.Schema({
pet: {
type: mongoose.Schema.Types.ObjectId,
ref: "Pet"
},
type: {
type: String,
enum:["meal","play","medication","vaccination"]
},
title: {
type:String,
default:""
},
repeat: {
type: String,
enum:["1","2","3"]
// 1 => one time
// 2 => daily
// 3 => weekly
},
days: {
type: [String],
enum:["sat","sun","mon","tue","wed","thu","fri"]
},
datetime:{
type:Date,
},
description: {
type: String
},
owner: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
}
}, {
timestamps: true
});
module.exports = mongoose.model("Schedule", scheduleSchema);
note:
1 => one time: it only occurs one-time id its datetime passed then it not show in upcoming
schedules.
2 => daily: it occurs daily if its time passed then it shows in upcoming schedules according to time,
3 => weekly: it shows every week selected days.
and today date is ISODate("2021-02-08T04:44:11.440Z")
/* 1 */
{
"_id" : ObjectId("6020ddbbef5a92b5a84ee349"),
"title" : "labore",
"days" : [],
"deleted" : false,
"type" : "play",
"repeat" : "2",
"datetime" : ISODate("2021-02-08T05:44:11.440Z"),
"description" : "Blanditiis et eum voluptatibus officiis repellendus ut qui ratione laborum.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T06:44:11.440Z"),
"updatedAt" : ISODate("2021-02-08T06:44:11.440Z"),
"__v" : 0
}
/* 2 */
{
"_id" : ObjectId("6020de0def5a92b5a84ee34a"),
"title" : "rerum",
"days" : [],
"deleted" : false,
"type" : "play",
"repeat" : "1",
"datetime" : ISODate("2021-01-26T22:13:01.000Z"),
"description" : "Ut nisi possimus nostrum quae.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T06:45:33.412Z"),
"updatedAt" : ISODate("2021-02-08T06:45:33.412Z"),
"__v" : 0
}
/* 3 */
{
"_id" : ObjectId("6020de33ef5a92b5a84ee34b"),
"title" : "ex",
"days" : [
"sat",
"sun",
"mon"
],
"deleted" : false,
"type" : "play",
"repeat" : "3",
"datetime" : ISODate("2021-05-17T12:21:00.000Z"),
"description" : "Provident quidem occaecati occaecati cumque quia distinctio rerum soluta nihil.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T06:46:11.035Z"),
"updatedAt" : ISODate("2021-02-08T07:18:10.473Z"),
"__v" : 0
}
/* 4 */
{
"_id" : ObjectId("602117f7a02996e2fa19fe5e"),
"title" : "quasi",
"days" : [
"sat",
"sun"
],
"deleted" : false,
"type" : "play",
"repeat" : "3",
"datetime" : ISODate("2020-06-20T02:46:26.000Z"),
"description" : "Sunt vitae molestiae et eius soluta rerum dignissimos.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T10:52:39.405Z"),
"updatedAt" : ISODate("2021-02-08T10:52:39.405Z"),
"__v" : 0
}
/* 5 */
{
"_id" : ObjectId("602131d2371a08f9649978f8"),
"title" : "quia",
"days" : [
"fri",
"wed"
],
"deleted" : false,
"type" : "play",
"repeat" : "3",
"datetime" : ISODate("2020-02-26T19:02:25.000Z"),
"description" : "Sed eveniet nemo inventore non sed non.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T12:42:58.993Z"),
"updatedAt" : ISODate("2021-02-08T12:42:58.993Z"),
"__v" : 0
}
/* 6 */
{
"_id" : ObjectId("602131fc371a08f9649978f9"),
"title" : "sequi",
"days" : [
"fri",
"wed"
],
"deleted" : false,
"type" : "play",
"repeat" : "3",
"datetime" : ISODate("2021-04-21T21:48:47.000Z"),
"description" : "Similique voluptatem ut.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T12:43:40.623Z"),
"updatedAt" : ISODate("2021-02-08T12:43:40.623Z"),
"__v" : 0
}
/* 7 */
{
"_id" : ObjectId("602132f52df18ffa9cde8314"),
"title" : "quia",
"days" : [],
"deleted" : false,
"type" : "play",
"repeat" : "1",
"datetime" : ISODate("2022-02-04T17:22:52.000Z"),
"description" : "Eum voluptatem enim blanditiis omnis autem molestias minus aspernatur.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T12:47:49.628Z"),
"updatedAt" : ISODate("2021-02-08T12:47:49.628Z"),
"__v" : 0
}
/* 8 */
{
"_id" : ObjectId("6021332f8e248cfad1a5bb43"),
"title" : "dolorem",
"days" : [],
"deleted" : false,
"type" : "play",
"repeat" : "1",
"datetime" : ISODate("2021-02-02T07:59:29.000Z"),
"description" : "Recusandae ipsam rerum repudiandae numquam id nihil eos dicta odit.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T12:48:47.454Z"),
"updatedAt" : ISODate("2021-02-08T12:48:47.454Z"),
"__v" : 0
}
which aggregation query is used to show upcoming schedules.
please guid me if i need to change the Schema of Schedules model today date is ISODate("2021-02-08T04:44:11.440Z")
next upcoming schedules I want a response like below.
[
// ISODate("2021-02-08T04:44:11.440Z")
{
"_id" : ObjectId("6020ddbbef5a92b5a84ee349"),
"title" : "labore",
"days" : [],
"deleted" : false,
"type" : "play",
"repeat" : "2",
"datetime" : ISODate("2021-02-08T05:44:11.440Z"),
"description" : "Blanditiis et eum voluptatibus officiis repellendus ut qui ratione laborum.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T06:44:11.440Z"),
"updatedAt" : ISODate("2021-02-08T06:44:11.440Z"),
"__v" : 0
},
{
"_id" : ObjectId("602131d2371a08f9649978f8"),
"title" : "quia",
"days" : [
"fri",
"wed"
],
"deleted" : false,
"type" : "play",
"repeat" : "3",
"datetime" : ISODate("2020-02-26T19:02:25.000Z"),
"description" : "Sed eveniet nemo inventore non sed non.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T12:42:58.993Z"),
"updatedAt" : ISODate("2021-02-08T12:42:58.993Z"),
"__v" : 0
},
{
"_id" : ObjectId("602131fc371a08f9649978f9"),
"title" : "sequi",
"days" : [
"fri",
"wed"
],
"deleted" : false,
"type" : "play",
"repeat" : "3",
"datetime" : ISODate("2021-04-21T21:48:47.000Z"),
"description" : "Similique voluptatem ut.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T12:43:40.623Z"),
"updatedAt" : ISODate("2021-02-08T12:43:40.623Z"),
"__v" : 0
},
{
"_id" : ObjectId("6020de33ef5a92b5a84ee34b"),
"title" : "ex",
"days" : [
"sat",
"sun"
],
"deleted" : false,
"type" : "play",
"repeat" : "3",
"datetime" : ISODate("2021-05-17T12:21:00.000Z"),
"description" : "Provident quidem occaecati occaecati cumque quia distinctio rerum soluta nihil.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T06:46:11.035Z"),
"updatedAt" : ISODate("2021-02-08T07:18:10.473Z"),
"__v" : 0
},
{
"_id" : ObjectId("602117f7a02996e2fa19fe5e"),
"title" : "quasi",
"days" : [
"sat",
"sun"
],
"deleted" : false,
"type" : "play",
"repeat" : "3",
"datetime" : ISODate("2020-06-20T02:46:26.000Z"),
"description" : "Sunt vitae molestiae et eius soluta rerum dignissimos.",
"owner" : ObjectId("5ff6f35f6b96b098b87398c1"),
"pet" : ObjectId("5ff845d26b36e359194b5285"),
"createdAt" : ISODate("2021-02-08T10:52:39.405Z"),
"updatedAt" : ISODate("2021-02-08T10:52:39.405Z"),
"__v" : 0
}]