在MongoDB上,在上午9点到晚上7点之间“创建”元素

时间:2015-03-13 17:58:10

标签: mongodb mongodb-query

我有一个名为 created 的DateTime字段的集合。 ¿有没有办法查询在任何日期但在特定时间间隔内创建的元素,如标题所示,使用 find 或其他方法?

2 个答案:

答案 0 :(得分:0)

在mysql中我创建了一个datetime字段,即yearmonthdayhrminsec .. 20150313132300这样它的完全数字并且不依赖于不同数据库处理日期和时间的方式。通过这种方式,我可以在数字范围内查询.....无论如何,对我来说更容易。

答案 1 :(得分:0)

我在这里提供一些代码。请根据您的要求修改以下代码。

以下函数frame_date()将根据小时,分钟,秒和毫秒获得时间。

function frame_date(gethours, getMins, getSecs, getMiliSecs) {

    var timestamp = new Date();
    var getYear = timestamp.getFullYear();
    var getMnth = timestamp.getMonth();
    var getDate = timestamp.getDate();
    if (getDate < 10) {
        getDate = "0" + getDate;
    }
    if (getMnth < 9) {
        getMnth = parseInt(getMnth) + 1
        getMnth = "0" + getMnth;
    } else {
        getMnth = getMnth + 1;
    }


    var final_framed_date = getYear + "-" + getMnth + "-" + getDate + " " + gethours + ":" + getMins + ":" + getSecs + "." + getMiliSecs;
    return final_framed_date;

}

现在我们将在新的Date()中调用frame_date()函数来获取日期。

var nine_am_date = new Date(frame_date(09, 00, 00, 000));// get time of 9 a.m.

var seven_pm_date = new Date(frame_date(19, 00, 00, 000));// get time of 7 p.m.

现在我们将使用大于或小于创建的字段。它只会在上午9点之间取货。和晚上7点

db.collection('users').find({created: {$gte: nine_am_date, $lte: seven_pm_date}}).sort({created: -1}).toArray(function(err, users) {
    if (err) {
        //handle error here
    } else {
        //do stuff here
    }
});

由于