私は現在 MongoDB を学んでいますが、いくつか問題があります。
プロジェクトでは、SQL を使用していて、Artist、Album、Song の 3 つのテーブルがありました。
それから、行がたくさんあり、また興味があったので、Mongoに変更することにしました...
Mongo では、すべてを含むコレクションソングが 1 つしかありません。
- トラック名
- アーティスト名
- アートワーク
- フォルダ
- アルバム名
- アルバムの日付
まず、この構造が正しいかどうか、または SQL にあった各テーブルのコレクションを作成する必要があるかどうかを知りたいですか? 私の主な目的は、artistName="something" および trackName="something_else" を検索できるようにすることです...単純な検索で、非常に高速に動作します! :)
ただし、すべてのアーティストをリンク (フォルダー) とともに表示するページも必要です。ここに私の問題があります: すべてのアーティストを表示し、artistName の順序で 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'
だから私の質問は、私が必要とすることを行うための最良の方法は何ですか?
どうもありがとう、バレンティン