PHP mongo聚合:匹配同一字段上的多个值
我需要管道来匹配字段“modelName”等于“movies”或“tv_shows”的文档。我尝试了下面的代码,但它只匹配“电视节目”,而忽略了“电影”PHP mongo聚合:匹配同一字段上的多个值,php,mongodb,aggregation-framework,Php,Mongodb,Aggregation Framework,我需要管道来匹配字段“modelName”等于“movies”或“tv_shows”的文档。我尝试了下面的代码,但它只匹配“电视节目”,而忽略了“电影” $match = array('$match' => array('modelName' => 'movies', 'modelName' => 'tv_shows')); 全文: <?php $connection = new MongoClient; $collection = $connection
$match = array('$match' => array('modelName' => 'movies', 'modelName' => 'tv_shows'));
全文:
<?php
$connection = new MongoClient;
$collection = $connection -> selectDB("getglue") -> selectCollection("gg");
MongoCursor::$timeout = -1;
$match = array('$match' => array('modelName' => 'movies', 'modelName' => 'tv_shows'));
$group = array('$group' => array('_id' => '$title', 'total' => array('$sum' => 1)));
$sort = array('$sort' => array('total' => -1));
$limit = array('$limit' => 7);
$pipeline = array($match, $group, $sort, $limit);
$out = $collection -> aggregate($pipeline);
echo json_encode($out, JSON_PRETTY_PRINT);
?>
使用
$或
运算符:
$match = array('$match' =>
array('$or' => array(array("modelName" => "movies"),
array("modelName" => "tv_shows"))
)
);
PHP中的数组
实际上是一个有序映射
。对于任何键,贴图只能有一个值,最后添加的值将覆盖同一键之前的任何值。因此,在下面,tv\u显示键的最后一个附加值-modelName
将作为键的唯一值关联。这就是为什么只有tv\u节目的modelname
才会得到结果的原因
'$match' => array('modelName' => 'movies', 'modelName' => 'tv_shows')