我想对数据库中的所有用户进行查询。检查每个用户的"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);