我目前正在学习 MongoDB,但遇到了一些问题。
对于一个项目,我使用的是 SQL,我有 3 个表:Artist、Album、Song。
然后我决定换成 Mongo,因为我有很多行,也因为我很好奇......
在 Mongo 中,我只有一首合集 Song,其中包含所有内容:
- 曲目名称
- 艺术家姓名
- 艺术品
- 文件夹
- 专辑名
- 专辑日期
首先我想知道这个结构是否正确,或者我是否应该为我在 SQL 中拥有的每个表创建集合?我的主要目标是能够搜索 artistName="something" 和 trackName="something_else"... 通过简单的查找,它的工作速度非常快!:)
但是,我还需要一个页面来显示所有艺术家及其链接(文件夹),这是我的问题:我想显示所有艺术家,按艺术家姓名排序,以 A 开头(例如)并获取每个艺术家的文件夹。 ..
我试过这个:
$cursor =$collection->distinct("artistName", array( "artistName" => $regex));
这工作正常,但我需要folder
..
然后我尝试了这个:
$ops = array(
array(
'$project' => array(
"artistName" => 1,
"folder" => 1,
)
),
array('$match' => array( "artistName" => $regex)),
array('$group' => array(
'_id'=>'$artistName',
"artistName" => array('$first' => '$artistName'),
"folder" => array('$first' => '$folder')
),
array('$sort' => array('artistName'=>-1)),
)
);
$results = $collection->aggregate($ops);
没有排序但排序我有以下错误:
Pipeline::run(): unrecognized pipeline op "0'
所以我的问题是做我需要的最好的方法是什么?
非常感谢,瓦伦丁