Node MongoDB Native - 按日期/时间过滤

时间:2015-05-14 05:46:41

标签: node.js mongodb

在原生MongoDB中,以下内容将我的全文搜索限制为过去6小时内发布的文章:

db.getCollection('articles').find({
    $and: [{
        $text: {
            $search: 'stackoverflow'
        }
    }, {
        $where: function() {
            return Date.now() - this.published.getTime() < (6 * 60 * 60 * 1000)
        }
    }]
})...

以上对node-mongodb-native的Node.js不起作用 - 整个$ where对象被忽略,但不会抛出错误。有没有其他方法可以根据时间限制我的查询结果?

1 个答案:

答案 0 :(得分:2)

尝试创建datetime对象,然后在查询中使用它,方法是构造一个新的Date,其值为当前时间戳减去6小时,如下所示:

 public class TestThreads {
     public static void main (String [] args) {
       MyRunnable r = new MyRunnable();
         Thread first = new Thread(r);
         Thread second = new Thread(r);
         Thread third = new Thread(r);
         first.start();
         first.join();  // will wait for the first thread to terminate
         second.start();
         second.join();  // will wait for the second thread to terminate
         third.start();
}
}

或者您可以使用 momentjs 库,这在处理日期时非常方便,特别是subtract()方法

var sixHours = 6 * 60 * 60 * 1000; /* ms */
    sixHoursAgo = new Date(new Date().getTime() - sixHours);

db.getCollection('articles').find({
    $text: { $search: 'stackoverflow'},
    published: { $gte: sixHoursAgo  }
})