我是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 stats
给出以下起点:
$db = $connection->$database;
$collection = $db->$table;
我将如何解决这个问题,我已经阅读了mongo上的map / reduce,但目前它对我来说并没有多大意义。
非常感谢为此工作提供的一些指导。
答案 0 :(得分: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/