indexing - Clarification on sorting subsets in mongodb -


i have documents fields a, b, c, d, e, p in mongodb. have indexes { a: 1 }, { b: 1 },{ c: 1 }, { d: 1 },{ e: 1 }, { p: 1 }, compound indexes { a: 1, b: 1, c: 1 }. field p represents position of fields.

if have select this: { a: 'something', b: 'something else', c: 'and again' }, know use index { a: 1, b: 1, c: 1 } search (obviously).

however, if want sort p ( { p: 1 }), indexes used sort data? worried because can potentially have large dataset.

i read http://docs.mongodb.org/manual/tutorial/sort-results-with-indexes/ , cannot quite figure out use case (although it's there)

probably best said "can mongodb use 1 index match , 1 sort?" , answer no.

the thing "looking" in explain output see if index used sort value scanandorder show true when index cannot used , false can.

considering adapted sample, compound index on "a", "b", , "c" , separate index on "p", query this:

db.collection.find( { a: "a", b: "b" }).sort({ p: 1 }).explain() 

would show compound index used query, not used sort. if had index created this:

db.collection.ensureindex({ a: 1, b: 1, p: 1 })

then index would used sort. in similar fashion, if has created this:

db.collection.ensureindex({ p: 1, a: 1, b: 1 })

then index selected , done sort action , used sort. not efficient of values a , b scanned in index determine result.

as final case small anount of documents , original compound selections optimizer pick "p" index, given small amount of documents scan fact use index affect sort operation.


Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -