0

Can I find whether library is open or closed now without changing following schemas:

"openhours" : {
                    "sun" : {
                        "day" : "Sun",
                        "active" : true,
                        "open" : "01:00",
                        "close" : "00:05"
                    },
                    "mon" : {
                        "day" : "Mon",
                        "active" : false,
                        "open" : "00:00",
                        "close" : "00:00"
                    },
                    "tue" : {
                        "day" : "Tue",
                        "active" : false,
                        "open" : "00:00",
                        "close" : "00:00"
                    },
                   ...
                    "sat" : {
                        "day" : "Sat",
                        "active" : false,
                        "open" : "00:00",
                        "close" : "00:00"
                    }
}

I did a lot of research and can't find any solution when time is stored as HH:MM format in documents.

Any help is appreciated?

Ritesh Kumar Gupta
  • 5,055
  • 7
  • 45
  • 71

1 Answers1

3

Even though times are stored in "HH:MM" format, it seems that you can still make sensible queries (thanks to zero padding you have there, lexicographical order of those time strings is the same as time order).

Here's some pseudo-code for you:

var date = new Date();
var hhmm = date.getHHMM(); // '20:46'
var dayname = date.getDayName(); // 'thu'

db.library.find({"openhours.#{dayname}.open": {'$lt': hhmm}, "openhours.#{dayname}.close": {'$gt': hhmm}});
Sergio Tulentsev
  • 226,338
  • 43
  • 373
  • 367