我想要選擇的是在用戶指定的日期時間等之間的文件,證件:我使用laravel框架和jenssegersMongoDB的原始查詢並選擇其中給出的日期時間週期
$from_date : "2017-01-07 09:08:59" To `$to_date : "2017-08-09 09:08:59"`
/laravel-的MongoDB mongodb驅動程序來運行我的查詢,這是我的原始查詢:
$normal_banners = BannerView::raw(function ($collection) use ($id, $from_date, $to_date) {
$conditions = [
["camp_id" => ['$eq' => $id]],
['$or' => [
['seat_target_status' => ['$eq' => true]],
['seat_target_status' => ['$eq' => false]]
]],
['camp_target_status' => ['$eq' => false]],
];
if ($from_date) {
$conditions[] = ['created_at' => ['$gte' => $from_date]];
}
return $collection->aggregate([
['$match' => ['$and' => $conditions]],
]);
})->count();
但我的問題是,它返回0作爲結果;而在這段時間內有16個文件。
我已經試過這種方法來獲得他們的計數,但仍爲0的結果:
$normal_banners = BannerView::Where('camp_id', $id)
->where(function ($query) {$query->where('seat_target_status', true)->orWhere('seat_target_status', false);
})
->where('camp_target_status', false)
->where("created_at", ">=", $from_date)
->count();
FYI:我已經輸入到ISODate這是created_at
場MongoDB的數據類型的轉換日期時間。
$Fromdatetime = $request->input('from_date');
$from_date = new DateTime($Fromdatetime);
$from_date = $from_date->format(DateTime::ISO8601);
mongodb的字段數據類型爲:
"updated_at": ISODate("2017-04-10T09:35:58.641Z"),
"created_at": ISODate("2017-04-10T09:35:58.641Z")
我的輸入數據的類型是:"2017-01-07T09:08:59+0000"
任何建議?
created_at和update_at之間沒有區別但是你是對的我應該檢查一個字段的日期時間檢查,讓我試試你的方法。 –
@Autisa_z我試過你的方法 - 或聲明部分工作,並感謝它,但日期檢查仍然無法正常工作,我得到0結果。 –
@Mohammad_Hosseini以及created_at/uploated_at列的格式是什麼? –