【发布时间】:2016-11-05 02:22:44
【问题描述】:
我有一个简单的音乐数据库,其中包含有关 CD 的信息(艺术家、专辑名称、发行年份等)。基本上,我想按艺术家对查询进行排序,然后是发行年份(这很容易做到),但在 CD 没有艺术家的情况下,我希望对专辑标题进行排序。
例如,对于以下 CD:
> 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
我可以输入包含艺术家或标题的 SortName 字段,但希望避免将其直接放入文档中。
【问题讨论】: