Last active
September 15, 2015 19:43
-
-
Save puentesarrin/d4804e62bf67f7afcda1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
> db.collection.insert({primary_tag: 'dog', secondary_tags: ['dogs', 'doggy', 'puppy']}) | |
> var tags = [] | |
> db.collection.find({'$or': [{'primary_tag': {'$in': tags}}, {'secondary_tags': {'$in': tags}}]}).explain() | |
{ | |
"cursor" : "BasicCursor", | |
"isMultiKey" : false, | |
"n" : 0, | |
"nscannedObjects" : 1, | |
"nscanned" : 1, | |
"nscannedObjectsAllPlans" : 1, | |
"nscannedAllPlans" : 1, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nYields" : 0, | |
"nChunkSkips" : 0, | |
"millis" : 1, | |
"server" : "precise64:27017", | |
"filterSet" : false | |
} | |
> db.collection.createIndex({primary_tag: 1}, {unique: true}) | |
{ | |
"createdCollectionAutomatically" : false, | |
"numIndexesBefore" : 1, | |
"numIndexesAfter" : 2, | |
"ok" : 1 | |
} | |
> db.collection.find({'$or': [{'primary_tag': {'$in': tags}}, {'secondary_tags': {'$in': tags}}]}).explain() | |
{ | |
"cursor" : "BasicCursor", | |
"isMultiKey" : false, | |
"n" : 0, | |
"nscannedObjects" : 1, | |
"nscanned" : 1, | |
"nscannedObjectsAllPlans" : 1, | |
"nscannedAllPlans" : 1, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nYields" : 0, | |
"nChunkSkips" : 0, | |
"millis" : 0, | |
"server" : "precise64:27017", | |
"filterSet" : false | |
} | |
> db.collection.find({'$or': [{'secondary_tags': {'$in': tags}}, {'primary_tag': {'$in': tags}}]}).explain() | |
{ | |
"cursor" : "BasicCursor", | |
"isMultiKey" : false, | |
"n" : 0, | |
"nscannedObjects" : 1, | |
"nscanned" : 1, | |
"nscannedObjectsAllPlans" : 1, | |
"nscannedAllPlans" : 1, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nYields" : 0, | |
"nChunkSkips" : 0, | |
"millis" : 0, | |
"server" : "precise64:27017", | |
"filterSet" : false | |
} | |
> db.collection.createIndex({secondary_tags: 1}) | |
{ | |
"createdCollectionAutomatically" : false, | |
"numIndexesBefore" : 2, | |
"numIndexesAfter" : 3, | |
"ok" : 1 | |
} | |
> db.collection.find({'$or': [{'primary_tag': {'$in': tags}}, {'secondary_tags': {'$in': tags}}]}).explain() | |
{ | |
"clauses" : [ | |
{ | |
"cursor" : "BtreeCursor primary_tag_1", | |
"isMultiKey" : false, | |
"n" : 0, | |
"nscannedObjects" : 0, | |
"nscanned" : 0, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"primary_tag" : [ ] | |
} | |
}, | |
{ | |
"cursor" : "BtreeCursor secondary_tags_1", | |
"isMultiKey" : true, | |
"n" : 0, | |
"nscannedObjects" : 0, | |
"nscanned" : 0, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"secondary_tags" : [ ] | |
} | |
} | |
], | |
"cursor" : "QueryOptimizerCursor", | |
"n" : 0, | |
"nscannedObjects" : 0, | |
"nscanned" : 0, | |
"nscannedObjectsAllPlans" : 0, | |
"nscannedAllPlans" : 0, | |
"scanAndOrder" : false, | |
"nYields" : 0, | |
"nChunkSkips" : 0, | |
"millis" : 0, | |
"server" : "precise64:27017", | |
"filterSet" : false | |
} | |
> var tags = ['foo'] | |
> db.collection.find({'$or': [{'primary_tag': {'$in': tags}}, {'secondary_tags': {'$in': tags}}]}).explain() | |
{ | |
"clauses" : [ | |
{ | |
"cursor" : "BtreeCursor primary_tag_1", | |
"isMultiKey" : false, | |
"n" : 0, | |
"nscannedObjects" : 0, | |
"nscanned" : 0, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"primary_tag" : [ | |
[ | |
"foo", | |
"foo" | |
] | |
] | |
} | |
}, | |
{ | |
"cursor" : "BtreeCursor secondary_tags_1", | |
"isMultiKey" : true, | |
"n" : 0, | |
"nscannedObjects" : 0, | |
"nscanned" : 0, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"secondary_tags" : [ | |
[ | |
"foo", | |
"foo" | |
] | |
] | |
} | |
} | |
], | |
"cursor" : "QueryOptimizerCursor", | |
"n" : 0, | |
"nscannedObjects" : 0, | |
"nscanned" : 0, | |
"nscannedObjectsAllPlans" : 0, | |
"nscannedAllPlans" : 0, | |
"scanAndOrder" : false, | |
"nYields" : 0, | |
"nChunkSkips" : 0, | |
"millis" : 1, | |
"server" : "precise64:27017", | |
"filterSet" : false | |
} | |
> var tags = ['dog'] | |
> db.collection.find({'$or': [{'primary_tag': {'$in': tags}}, {'secondary_tags': {'$in': tags}}]}).explain() | |
{ | |
"clauses" : [ | |
{ | |
"cursor" : "BtreeCursor primary_tag_1", | |
"isMultiKey" : false, | |
"n" : 1, | |
"nscannedObjects" : 1, | |
"nscanned" : 1, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"primary_tag" : [ | |
[ | |
"dog", | |
"dog" | |
] | |
] | |
} | |
}, | |
{ | |
"cursor" : "BtreeCursor secondary_tags_1", | |
"isMultiKey" : true, | |
"n" : 0, | |
"nscannedObjects" : 0, | |
"nscanned" : 0, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"secondary_tags" : [ | |
[ | |
"dog", | |
"dog" | |
] | |
] | |
} | |
} | |
], | |
"cursor" : "QueryOptimizerCursor", | |
"n" : 1, | |
"nscannedObjects" : 1, | |
"nscanned" : 1, | |
"nscannedObjectsAllPlans" : 1, | |
"nscannedAllPlans" : 1, | |
"scanAndOrder" : false, | |
"nYields" : 0, | |
"nChunkSkips" : 0, | |
"millis" : 0, | |
"server" : "precise64:27017", | |
"filterSet" : false | |
} | |
> db.collection.find({'$or': [{'primary_tag': {'$in': tags}}, {'secondary_tags': {'$in': tags}}]}).limit(1).explain(true) | |
{ | |
"clauses" : [ | |
{ | |
"cursor" : "BtreeCursor primary_tag_1", | |
"isMultiKey" : false, | |
"n" : 1, | |
"nscannedObjects" : 1, | |
"nscanned" : 1, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"primary_tag" : [ | |
[ | |
"dog", | |
"dog" | |
] | |
] | |
} | |
}, | |
{ | |
"cursor" : "BtreeCursor secondary_tags_1", | |
"isMultiKey" : true, | |
"n" : 0, | |
"nscannedObjects" : 0, | |
"nscanned" : 0, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"secondary_tags" : [ | |
[ | |
"dog", | |
"dog" | |
] | |
] | |
} | |
} | |
], | |
"cursor" : "QueryOptimizerCursor", | |
"n" : 1, | |
"nscannedObjects" : 1, | |
"nscanned" : 1, | |
"nscannedObjectsAllPlans" : 1, | |
"nscannedAllPlans" : 1, | |
"scanAndOrder" : false, | |
"nYields" : 0, | |
"nChunkSkips" : 0, | |
"millis" : 0, | |
"allPlans" : [ | |
{ | |
"clauses" : [ | |
{ | |
"cursor" : "BtreeCursor primary_tag_1", | |
"isMultiKey" : false, | |
"n" : 1, | |
"nscannedObjects" : 1, | |
"nscanned" : 1, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"primary_tag" : [ | |
[ | |
"dog", | |
"dog" | |
] | |
] | |
} | |
}, | |
{ | |
"cursor" : "BtreeCursor secondary_tags_1", | |
"isMultiKey" : true, | |
"n" : 0, | |
"nscannedObjects" : 0, | |
"nscanned" : 0, | |
"scanAndOrder" : false, | |
"indexOnly" : false, | |
"nChunkSkips" : 0, | |
"indexBounds" : { | |
"secondary_tags" : [ | |
[ | |
"dog", | |
"dog" | |
] | |
] | |
} | |
} | |
], | |
"cursor" : "QueryOptimizerCursor", | |
"n" : 1, | |
"nscannedObjects" : 1, | |
"nscanned" : 1, | |
"scanAndOrder" : false, | |
"nChunkSkips" : 0 | |
} | |
], | |
"server" : "precise64:27017", | |
"filterSet" : false, | |
"stats" : { | |
"type" : "LIMIT", | |
"works" : 1, | |
"yields" : 0, | |
"unyields" : 0, | |
"invalidates" : 0, | |
"advanced" : 1, | |
"needTime" : 0, | |
"needFetch" : 0, | |
"isEOF" : 1, | |
"children" : [ | |
{ | |
"type" : "FETCH", | |
"works" : 1, | |
"yields" : 0, | |
"unyields" : 0, | |
"invalidates" : 0, | |
"advanced" : 1, | |
"needTime" : 0, | |
"needFetch" : 0, | |
"isEOF" : 0, | |
"alreadyHasObj" : 0, | |
"forcedFetches" : 0, | |
"matchTested" : 0, | |
"children" : [ | |
{ | |
"type" : "OR", | |
"works" : 1, | |
"yields" : 0, | |
"unyields" : 0, | |
"invalidates" : 0, | |
"advanced" : 1, | |
"needTime" : 0, | |
"needFetch" : 0, | |
"isEOF" : 0, | |
"dupsTested" : 1, | |
"dupsDropped" : 0, | |
"locsForgotten" : 0, | |
"matchTested_0" : 0, | |
"matchTested_1" : 0, | |
"children" : [ | |
{ | |
"type" : "IXSCAN", | |
"works" : 1, | |
"yields" : 0, | |
"unyields" : 0, | |
"invalidates" : 0, | |
"advanced" : 1, | |
"needTime" : 0, | |
"needFetch" : 0, | |
"isEOF" : 1, | |
"keyPattern" : "{ primary_tag: 1.0 }", | |
"isMultiKey" : 0, | |
"boundsVerbose" : "field #0['primary_tag']: [\"dog\", \"dog\"]", | |
"yieldMovedCursor" : 0, | |
"dupsTested" : 0, | |
"dupsDropped" : 0, | |
"seenInvalidated" : 0, | |
"matchTested" : 0, | |
"keysExamined" : 1, | |
"children" : [ ] | |
}, | |
{ | |
"type" : "IXSCAN", | |
"works" : 0, | |
"yields" : 0, | |
"unyields" : 0, | |
"invalidates" : 0, | |
"advanced" : 0, | |
"needTime" : 0, | |
"needFetch" : 0, | |
"isEOF" : 0, | |
"keyPattern" : "{ secondary_tags: 1.0 }", | |
"isMultiKey" : 1, | |
"boundsVerbose" : "field #0['secondary_tags']: [\"dog\", \"dog\"]", | |
"yieldMovedCursor" : 0, | |
"dupsTested" : 0, | |
"dupsDropped" : 0, | |
"seenInvalidated" : 0, | |
"matchTested" : 0, | |
"keysExamined" : 0, | |
"children" : [ ] | |
} | |
] | |
} | |
] | |
} | |
] | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment