2016-11-11 11 views
0

私はこのように見える文書のコレクションを持っている:jenssegers/laravel-mongodbパッケージを使用して、ドキュメントのコレクションの最大および最小の日付を取得する方法は?

{ 
    "_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

私は日付でコレクションを並べ替えることができますか?私はそれを試して見ます。 – kratos

答えて

2

あなたはLaravelのコレクション使用することができます

$collection->max('call_date'); 
$collection->min('call_date'); 

しかし、私は:あなたがその引数として、関連するキーでmaxminメソッドを使用することができ、その後、

$collection = collect($arr['calls']); 

とをこれが日付文字列に対して機能するかどうかはわかりません。そうでない場合は、次のようなものを使用してください:

$value = function($item) { 
    return strtotime($item['call_date']); 
}; 

$collection->max($value); 
$collection->min($value); 
+0

ありがとうございましたJan. That worked、 – kratos

+0

私は助けてくれると嬉しいです。最初の提案は機能しましたか?または2番目?最初は –

+0

です。私は日付フィールドとして保存しました。 – kratos

関連する問題