Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
609 views
in Technique[技术] by (71.8m points)

indexing - MongoDB compound index usage

Lets say I have document with the following two keys:

1) key1
2) key2

If I am creating compound index on both of them..

{'key1':1,'key2':1}

When running a query relevant only for key1.. does the index above is used? or I need to create specific index only for key1 also?

Thanks

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

In MongoDB, you can use index prefix to query the database. You can't use anything else. If your query does not contain key prefix the index won't be used.

Assuming your proposed index {'key1':1,'key2':1}:

Queries that will use index:

  • db.some.find({key1 : {$gt : 100}}) - uses prefix
  • db.some.find({key1 : {$gt : 100}, key2 : {$lt : 30}}) - uses full index
  • db.some.find({key3 : 'test'}).sort({key1 : 1}) - uses prefix for sort (direction match)

Queries that will NOT use index:

  • db.some.find({key2 : {$gt : 100}}) - index order matters - key2 is not prefix
  • db.some.find({key3 : 'test'}).sort({key1 : -1}) - index direction matters for multicolumn indexes
  • db.some.find({key3 : 'test'}).sort({key2 : 1}) - it's not prefix

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...