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

时间:2016-01-16 12:35:42

标签: php mongodb email

我想对我的数据库中的所有用户进行查询。检查' lastLogin'每个用户,如果这比以前更长7天,发送邮件到该用户的邮箱地址。 我已经做了一个简单的查询,但我不知道如何继续。数组符号确实让我困惑......

希望有人可以帮助我甚至发布代码段!



<?php

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

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

?>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您实际上是在寻找范围查询。创建 MongoDate ,例如使用 strtotime() ,代表7天前的日期,并在搜索查询中使用该搜索查询来搜索登录的文档field小于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);