0

我是 mongo 的新手,我正在尝试计算“代码”列表的条目数

例如。

名为“CODE”的字段中的数据

asd
fgh
jkl
asd

我试图解决的想法是如何做相当于 MySQL 的:

select count(id) from table where (CODE='asd' or CODE='fgh') group by CODE

使其返回:

asd 2
fgh 1

并忽略 jkl 统计信息

给出以下起点:

$db = $connection->$database;
$collection = $db->$table;

我将如何解决这个问题,我已经阅读了 mongo 中的 map/reduce,但目前它对我来说没有多大意义。

非常感谢您提供一些指导以使其正常工作。

4

1 回答 1

2

您可以使用 Map Reduce,也可以使用聚合框架,这对 SQL 人员来说可能更有意义:

$collection->aggregate(array(
    array('$match' => array('CODE' => array('$in' => array('asd','fgh')))),
    array('$group' => array('_id' => '$CODE', 'count' => array('$sum' => 1)))
));

这类似于:

select count(id) from table where (CODE='asd' or CODE='fgh') group by CODE

并将返回:

{
    {_id: asd, count: 2},
    //next document
}

作为参考,您可以通读文档并查看此处的示例:http: //docs.mongodb.org/manual/core/aggregation/

于 2013-04-22T07:50:15.053 回答