我想对我的数据库中的所有用户进行查询。检查' lastLogin'每个用户,如果这比以前更长7天,发送邮件到该用户的邮箱地址。 我已经做了一个简单的查询,但我不知道如何继续。数组符号确实让我困惑......
希望有人可以帮助我甚至发布代码段!
<?php
$m = new Mongo();
$collection = $m->selectDB('platte')->selectCollection('users');
$results = $collection->find(array(),array("email"=>1, "lastLogin"=>2));
?>
&#13;
答案 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);