抱歉,如果这可能是一个典型的“RTM”问题,我是 MongoDB 的新手并且做了一些手动阅读,但遗憾的是我没有找到解决这个问题的尝试。
我有两个集合,一个集合是“文章”,其中包含一组“类别”,其中包含一个或多个带有我的类别集合 ID 的 MongoID 对象。
我想显示所有类别以及引用该类别的文章数量。在我的解决方案下面,我发现了一些研究时间:
我的类别集合:
Array
(
[_id] => MongoId Object
(
[$id] => 54eb1510974f5590179702aa
)
[name] => Test
[multiplier] => 2
)
我的文章集:
Array
(
[_id] => MongoId Object
(
[$id] => 54e5e39f974f5535248b4bdf
)
[productnumber] => 63483
[categories] => Array
(
//... other categories...
[1] => MongoId Object
(
[$id] => 54eb1510974f5590179702aa
)
)
[image] => /var/www/mongodbtest/Files/FTP/images/63483.jpg
)
我当前的 PHP 代码:
foreach($oAllCategories as $oCategory)
{
$iArticleCount = $oArticles->find(array('categories' => $oCategory['_id']))->count();
// Debug
echo $oCategory['name'].' = '.$iArticleCount.' <br />';
}
现在的问题是,对于 70,000 篇文章和 2,200 个类别,这很慢并且需要很多时间。此外,如果不遍历所有文章,我无法按文章数量对我的类别进行排序。
有一个更好的方法吗?