1

我在MySql中使用这种格式在一周内一次获取数据

date > DATE_SUB( NOW(), INTERVAL 1 WEEK)  // for one week

date > DATE_SUB( NOW(), INTERVAL 1 MONTH) // for one month

如何转换为 php mongoDB

4

1 回答 1

0

据我所知,没有原生解决方案。假设您正在使用 shell 并且有这样的集合:

> db.foo.find({}, {_id: 0})
{ "date" : ISODate("2012-10-06T10:28:10.595Z") }
{ "date" : ISODate("2013-10-01T10:28:14.115Z") }
{ "date" : ISODate("2013-10-16T10:28:19.522Z") }
{ "date" : ISODate("2016-11-04T11:23:00.391Z") }

如果您想查找上周带有日期形式的所有文档,您可以使用以下代码:

//Create new date
var weekBefore = new Date((new Date).setDate(new Date().getDate() - 7));
db.foo.find({date: {$gt: weekBefore, $lt: new Date}})

如果您想减去一个月,您可以使用(取决于您的需要)以下之一:

var monthBefore = new Date(new Date().setMonth(new Date().getMonth() - 1))
db.foo.find({date: {$lt: monthBefore}} )

或者

var thirtyOneDaysBefore = new Date(
    (new Date).setDate(new Date().getDate() - 31)
);
db.foo.find({date: {$lt: thirtyOneDaysBefore}})

使用驱动程序时,您必须使用语言本机日期时间类型执行此操作。

于 2013-10-06T10:45:52.653 回答