我正在尝试转换基于mysql数据库的PHP脚本,以便在MongoDB数据库上运行它。我已经解决了除一个以外的主要查询。
想象一下,我有一个库(这是集合),每个文档都是一本书。所以我需要知道在某个语言(另一个领域)中有多少不同的作者在库中。
目前我有那段代码,我不知道如何继续:
$test = array(
array(
'$group' => array(
'_id' => array('author' => '$author' )
)
)
);
$out = $db->$collection->aggregate($test);
感谢。
答案 0 :(得分:0)
如果要放置过滤器,则需要使用 $ match 启动管道,命令将为:
db.collection.aggregate([
{ "$match" : {lang : "en"} },
{"$group":{"_id": {"author" : "$author"} , "total" : {"$sum" : 1} }}
])
如果将其转换为PHP,则为:
$test = array(
array('$match' => array("lang" => "en")),
array(
'$group' => array(
"_id" => array('author' => '$author'),
"total" => array('$sum' => 1)
),
),
);
在这种情况下,您必须在第一步(匹配/过滤)中传递语言。
如果你想能够使用所有语言"你只需要将语言放在$ group运算符
中db.collection.aggregate([
{"$group":{"_id": {"author" : "$author", lang : "$lang"} , "total" : {"$sum" : 1} }}
])
我让你用PHP推送它
您可以在此处找到有关 $ match 的更多信息: http://docs.mongodb.org/manual/reference/operator/aggregation/match/