Я хочу сделать запрос для всех пользователей в моей базе данных. Проверьте "lastLogin" каждого пользователя, и если это больше, чем, например, 7 дней, отправьте письмо на адрес электронной почты этого пользователя. Я сделал простой запрос уже, но я понятия не имею, как продолжить. Обозначение массива действительно меня смущает...
Надеюсь, кто-то может помочь мне или даже опубликовать фрагмент кода!
<?php
$m = new Mongo();
$collection = $m->selectDB('platte')->selectCollection('users');
$results = $collection->find(array(),array("email"=>1, "lastLogin"=>2));
?>
Вы по существу ищете запрос диапазона. Создайте MongoDate
, например, используя strtotime()
, который представляет дату 7 дней назад и использует это в вашем поисковом запросе для поиска документов, чье поле входа меньше, чем дата 7 дней назад:
В оболочке Mongo это будет представлено с запросом:
var d = new Date();
d.setDate(d.getDate() - 7);
var query = {
"lastLogin": {
"$lte": d
}
};
var projection = {
"email": 1,
"lastLogin": 1
}
db.users.find(query, projection);
В PHP это будет означать:
$m = new Mongo();
$collection = $m->selectDB('platte')->selectCollection('users');
$d = new MongoDate(strtotime(date("Y-m-d H:i:s","-7 days")));
$searchCriteria = array(
"lastLogin" => array(
"$lte" => $d
),
);
$projection = array(
"email" => 1,
"lastLogin" => 1
);
$results = $collection->find($searchCriteria, $projection);