How to show upcoming schedules in mongoDB?

Viewed 73

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
}]

0 Answers
Related