2016-11-29 1 views
4

У меня есть дата, сохраненная как строка, подобная этой tdate:"2016-11-26 2:23:11" в mongodb. Я хочу считать все объекты, у которых есть эта дата 2016-11-26. Вот как я пытаюсь сделать, используя php, но вам не повезло.Как подсчитать объекты с определенным днем ​​в mongodb и php

date_authenticated имеет следующий формат "Y-m-d H:i:s" в то время как я хочу, чтобы получить все объекты по day, которые должны иметь этот формат "Y-m-d"

function count_auth($tdate) { 
    $collection = 'mycollection'; 
    return $this->db->{$collection}->count(array('date_authenticated' => $tdate)); 
    } 

ответ

1

Если вы сохранили дату в виде строки, вы можете найти записи с MongoRegex, как описано в PHP mongo find field starts with. В вашем случае это должно быть что-то вроде:

$startsWithRegex = '/^2016-11-26/'; 
$this->db->{$collection}->count(['date_authenticated' => array('$regex'=>new MongoRegex($startsWithRegex))]); 

Однако я рекомендую вам чтение Find objects between two dates MongoDB как вы можете выполнить более запросы, если обрабатывать даты должным образом.

+0

Полезный ответ: могу ли я использовать этот '$ startsWithRegex = '/^'.$ tdate.'/';'? – Muya

+0

Да, это должно быть возможно – P0rnflake

Смежные вопросы