2013-07-17 2 views
1

У меня есть коллекция пользователей, и у пользователей есть поле meta.create_date, которое является ISODate, как показано ниже. Я пытаюсь подсчитать, сколько пользователей было создано за последние N дней. У меня есть следующие в базе:Почему этот запрос PHP MongoDB не возвращает никаких результатов, даже если он есть?

{ 
    "_id" : ObjectId("51e61fa16803fa40130a0581"), 
    "meta" : { 
     "create_date" : ISODate("2013-07-17T04:37:53.355Z") 
    } 
} 

Мой PHP код:

$daysAgo = new MongoDate(date('c', strtotime('-7 days'))); 

$query = array(
    'meta.create_date' => array(
     '$gte' => $daysAgo, 

    ) 
); 

$result = $this->db->users->count($query); 

Я также попытался указать диапазон, используя '$ GTE' и '$ Ге', где $ Ге => сегодня.

Однако результат возвращается как 0. Итак, что здесь происходит?

ответ

3

MongoDate() принимает время int(). Таким образом, передача в php date() в конструктор не работает. Это надлежащий способ:

$daysAgo = new MongoDate(strtotime('-7 days')); 
Смежные вопросы