在原生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对象被忽略,但不会抛出错误。有没有其他方法可以根据时间限制我的查询结果?
答案 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 }
})