【问题标题】:Query MongoDB via PHP, compare date and send email通过 PHP 查询 MongoDB,比较日期并发送电子邮件
【发布时间】:2016-01-16 21:02:52
【问题描述】:

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

希望有人可以帮助我,甚至发布代码sn-p!

<?php

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

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

?>

【问题讨论】:

    标签: php mongodb email


    【解决方案1】:

    您实际上是在寻找范围查询。创建一个 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 2015-07-30
      • 2010-11-22
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多