私は、CDに関する情報(アーティスト、アルバムタイトル、リリース年など)を含むシンプルな音楽データベースを持っています。基本的に、私はアーティスト、リリース年(これは簡単です)で私のクエリを並べ替えることができますが、CDにアーティストがいない場合は、ソートしてアルバムタイトルをキーします。次のCDのための例としてMongoDBの複数のフィールドに1つのソートをキーすることはできますか?
、:
> db.music.find()
{ "_id" : ObjectId("581d3e073a4d1f0d73a8650b"), "Type" : "CD", "Artist" : "Korn", "Title" : "Korn", "ReleaseYear" : 1994 }
{ "_id" : ObjectId("581d3e283a4d1f0d73a8650c"), "Type" : "CD", "Artist" : "Korn", "Title" : "Life is Peachy", "ReleaseYear" : 1996 }
{ "_id" : ObjectId("581d3efd3a4d1f0d73a8650d"), "Type" : "CD", "Title" : "Big Daddy", "ReleaseYear" : 1999 }
{ "_id" : ObjectId("581d3f3c3a4d1f0d73a8650e"), "Type" : "CD", "Title" : "Aerosmith", "ReleaseYear" : 1973, "Artist" : "Aerosmith" }
私はそれがにソートしたいと思う:ここ
Aerosmith - Aerosmith (1973)
Big Daddy (1999)
Korn - Korn (1994)
Korn - Life is Peachy (1996)
は、私が試したものです:
> db.music.find().sort({[Artist:1,Title:1],ReleaseYear:1})
2016-11-04T22:10:39.317-0400 E QUERY [thread1] SyntaxError: missing ] in computed property name @(shell):1:29
> db.music.find().sort({[Artist,Title]:1,ReleaseYear:1})
2016-11-04T22:10:50.564-0400 E QUERY [thread1] SyntaxError: missing ] in computed property name @(shell):1:29
> db.music.find().sort({{Artist:1,Title:1},ReleaseYear:1})
2016-11-04T22:11:12.040-0400 E QUERY [thread1] SyntaxError: invalid property id @(shell):1:22
IをCOLLDSortName
フィールドに入力します。このフィールドには、アーティストoタイトルは、文書に直接入れないでください。
これは素晴らしいです!私はどこかに小さな誤りがあるのではないかと心配しています。 'パイプラインステージ指定オブジェクトは正確に1つのフィールドを含む必要があります。' '$ sort:{}'を取り出すと、新しいフィールド 'SortName'で正しいデータセットが得られます。 –
ああ、 '$ project'と' $ sort'は集約配列内の別々の要素である必要があります。これで完璧に動作します! –