索引:
db.media.createIndex({"Tracklist": 1})
- 1表示升序
- -1表示降序
我们要着重看一下对数组创建索引的情况。
构建一个集合:db.media.insertOne({"Type": "CD", "Artist": "Nirvana", "Title": "Nevermind", "Tracklist": [{"Track": 1, "Title": "AAA", "Length": 10},{"Track": 2, "Title": "BBB", "Length": 20}]})
对数组创建索引:
db.media.createIndex({"Tracklist": 1})
查询:
db.media.find({"Tracklist.Track": 2}).explain(true)
发现并未使用索引。
db.media.find({"Tracklist": {"Title": "AAA"}}).explain(true)
db.media.find({"Tracklist": {"Track": 1, "Title": "AAA", "Length": 10}}).explain(true)
都使用了Tracklist索引。
所以如果对数组建立了索引,查询要指定的是文档对象,而不是键值。