Skip to content

Instantly share code, notes, and snippets.

@puentesarrin
Last active September 15, 2015 19:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save puentesarrin/d4804e62bf67f7afcda1 to your computer and use it in GitHub Desktop.
Save puentesarrin/d4804e62bf67f7afcda1 to your computer and use it in GitHub Desktop.
> 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