通过PHP查询MongoDB,比较日期并发送电子邮件


Query MongoDB via PHP, compare date and send email

我想对数据库中的所有用户进行查询。检查每个用户的"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 shell 中,这将用查询表示:

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);