Запрос MongoDB через PHP, сравнить дату и отправить письмо

1

Я хочу сделать запрос для всех пользователей в моей базе данных. Проверьте "lastLogin" каждого пользователя, и если это больше, чем, например, 7 дней, отправьте письмо на адрес электронной почты этого пользователя. Я сделал простой запрос уже, но я понятия не имею, как продолжить. Обозначение массива действительно меня смущает...

Надеюсь, кто-то может помочь мне или даже опубликовать фрагмент кода!

<?php

$m = new Mongo();
$collection = $m->selectDB('platte')->selectCollection('users');

$results = $collection->find(array(),array("email"=>1, "lastLogin"=>2));

?>
Теги:
email

1 ответ

0

Вы по существу ищете запрос диапазона. Создайте 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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню