1

在大约一年的 OO-PHP 经验之后,我只是向 ZF 介绍自己。我开始使用的这本书:

<?=

在地方而不是

<?php echo

作者似乎很有信心这将输出数据,而不是实际代码,但是,它似乎对我不起作用,因为我不得不使用普通方法。

有没有人成功地使用前者而不是后者?关于配置等的任何建议......可能会导致这对我造成破坏?已安装 ZF 1.11.11


MongoDB - $unwind - 如何在 $group 聚合中展开多个数组

(1) 我在集合中添加了以下内容:

{ "_id" : 1, "hitsPerOneSecond" : [ 2, 3, 5, 4, 1, 2, 3, 4, 1, 2 ], "startTime" :    ISODate("2012-04-07T10:41:33.380Z"), "returnCodeHits" : { "300" : 5, "200" : 12 }, "xxxServer" : "xxx:8100", "statsSummarizedToSeconds" : 10, "pathStats_xxx_api_get_version" : [ 0.2280779683225852, 0.030849283020361273, 0.9947690473370484 ], "pathStats_xxx_api_get_response" : [ 1.2163705612407407, 1.0602539963494662, 1.4853219936411421 ], "type" : "xxxType", "startTimeStr" : "07-04-2012:10AM" }

{ "_id" : 2, "hitsPerOneSecond" : [ 2, 3, 5, 4, 1, 2, 3, 4, 1, 2 ], "startTime" : ISODate("2012-04-07T10:41:43.380Z"), "returnCodeHits" : { "300" : 5, "200" : 12 }, "xxxServer" : "xxx:8100", "statsSummarizedToSeconds" : 10, "pathStats_xxx_api_get_version" : [ 0.2280779683225852, 0.030849283020361273, 0.9947690473370484 ], "pathStats_xxx_api_get_response" : [ 1.2163705612407407, 1.0602539963494662, 1.4853219936411421 ], "type" : "xxxType", "startTimeStr" : "07-04-2012:10AM" }

(2) 进行以下聚合时:

db.newStats.aggregate({$unwind: "$hitsPerOneSecond"},{$group:{_id:"$startTimeStr", totalHits: {$sum: "$hitsPerOneSecond"}, totalHitsCount: {$sum: 1}, avgHit: {$avg: "$hitsPerOneSecond"}, minHit: {$min:"$hitsPerOneSecond"}, maxHit:{$max: "$hitsPerOneSecond"}}});

(3) 结果正确:

{
"result" : [
    {
        "_id" : "07-04-2012:10AM",
        "totalHits" : 54,
        "totalHitsCount" : 20,
        "avgHit" : 2.7,
        "minHit" : 1,
        "maxHit" : 5
    }
],
"ok" : 1

}

(4) 但是,我需要在上面的同一聚合中对“pathStats_xxx_api_get_response”(来自集合)执行展开,以便在上面的相同结果中输出 totalResponses、totalResponsesCount、avgResponse、minResponse 和 maxResponse。因此,我的结果应该是这样的:

{
"result" : [
    {
        "_id" : "07-04-2012:10AM",
        "totalHits" : 54,
        "totalHitsCount" : 20,
        "avgHit" : 2.7,
        "minHit" : 1,
        "maxHit" : 5,
                    "totalResponses" : ??
                    "totalResponsesCount": ??
        "avgResponse" : 2.7,
        "minResponse" : 1,
        "maxResponse" : 5
    }
],
"ok" : 1

}

不确定如何在与我几乎相同的聚合中添加更多 $unwind !

4

1 回答 1

3

是的,<?=应该可以正常工作:

但是请注意,在 PHP 5.4.0 之前short_open_tag必须On在 php.ini 中才能正常工作:

http://www.php.net/manual/en/ini.core.php#ini.short-open-tag

祝你好运!

于 2012-04-16T00:14:11.417 回答