我有一组看起来像这样的文件:
{
"_id" : ObjectId("5826182e2e94e0aefc541924"),
"calls" : [
{
"call_date" : "2016-08-16 00:00:00.000",
"updated_at" : ISODate("2016-11-11T19:12:46.905Z"),
"created_at" : ISODate("2016-11-11T19:12:46.905Z"),
"_id" : ObjectId("5826182e2e94e0aefc541925")
}
],
[
{
"call_date" : "2016-08-19 00:00:00.000",
"updated_at" : ISODate("2016-11-11T19:12:46.905Z"),
"created_at" : ISODate("2016-11-11T19:12:46.905Z"),
"_id" : ObjectId("5826182e2e94f0aefc541925")
}
],
[
{
"call_date" : "2016-08-07 00:00:00.000",
"updated_at" : ISODate("2016-11-11T19:12:46.905Z"),
"created_at" : ISODate("2016-11-11T19:12:46.905Z"),
"_id" : ObjectId("5826182e2j94e0aefc541925")
}
]
}
我希望获得整个系列的最短和最长日期。因此,在上述情况下,我希望2016-08-07 00:00:00.000作为最短日期,2016-08-19 00:00:00.000作为最长日期。我不确定是否必须使用某种聚合函数或常规查询。谢谢你的帮助
答案 0 :(得分:4)
你可以使用Laravel的收藏:
$collection = collect($arr['calls']);
然后,您可以使用max
和min
方法以及相关键作为其参数:
$collection->max('call_date');
$collection->min('call_date');
但我不确定这会对日期字符串有效。如果没有,这样的事情应该有效:
$value = function($item) {
return strtotime($item['call_date']);
};
$collection->max($value);
$collection->min($value);