如何查询mongodb laravel中的特定日期,我需要该日期的所有数据

时间:2016-04-08 10:16:35

标签: mongodb laravel-5

我在我的项目中使用Moloquent作为mongoDB,我的日期以2015-09-28 03:30:00格式存储在mongoDB中,并希望编写类似

的查询
select * from table where date(storeddate)='2015-09-28' 

select * from table where year(storeddate)='2015'
使用Moloquent在mongoDB中

1 个答案:

答案 0 :(得分:2)

您可以使用查询构建器在构建日期范围时利用本机MongoDate对象,然后可以在查询中使用该日期范围。例如,以下查询

select * from users where date(storeddate)='2015-09-28' 

可以写成

$start = new MongoDate(strtotime("2015-09-28 00:00:00"));
$end = new MongoDate(strtotime("2015-09-29 00:00:00"));

$users = DB::collection('users')->whereBetween('storeddate', array($start, $end))->get();

Eloquent还支持Carbon或DateTime对象,而不是MongoDate对象,当保存到数据库时,这些对象将在内部转换为MongoDate对象。

使用与上面相同的示例,如果要查询来自用户数据的记录,其中mongodb日期时间字段storeddate年份部分是2015

select * from users where year(storeddate)='2015'

使用Carbon createFromDate()属性创建跨越一年的日期范围:

 $users = User::whereBetween(
             'storeddate', array(
                 Carbon::createFromDate(2015, 1, 1),
                 Carbon::createFromDate(2015, 12, 31)
             )
         )->get();