Mongodb:是否可以将map-reduce命令和查询字符串作为整数运行

时间:2015-05-13 18:23:45

标签: mongodb mongodb-query

所以我有以下PHP代码在MongoDB数据库集合上运行map-reduce命令:

$map = new MongoCode("function() { emit(this.app, this.bytes); }");
$reduce = new MongoCode("function(k, vals) { ".
    "var sum = 0;".
    "for (var i in vals) {".
        "sum += vals[i];".
    "}".
    "return sum; }");

$dateAdded = mktime(0,0,0,5,1,2015);
//echo $dateAdded." = ".date("r",$dateAdded)."<br>\n";

$request = $db->command(array(
    "mapreduce" => "log",
    "map" => $map,
    "reduce" => $reduce,
    "query" => array("event" => "destroy", "systimelong" => array('$gt' => $dateAdded)),
    "out" => array("inline" => 1)));

    var_dump($request);

当数据作为整数存储在数据库中时,这实际上非常有用。但有时数据会以字符串形式存储。为什么?那是另一个现在无法改变的故事。最终它将是一个整数,但我真的想知道我是否以及如何修改它来处理数据为字符串的情况,以防它发生。

由于Mongo使用Javscript,我觉得我应该可以在parseInt()和/或$map函数中使用$reduce函数,但它似乎不是工作。

另外,我该如何处理查询? systimelong字段只是unixtime,我使用PHP mktime()函数为月初生成一个整数值。再次,它比较整数更好,但我需要先转换字符串值。

有什么想法吗?

0 个答案:

没有答案