MongoDB Indexing Part 3


Sort Direction for index

When we created the index, we specified the sort direction for the index, in this case both ascending. Sorting on this indexes would work only is they are both indexed ascending or descending. But if you ix the direction of either fields, mongo will skip indexing all together.

Continue reading

Advertisements

MongoDB Indexing Part 2


Multi Term Query

db.animals.find({name:’cat’, tags:’land’}).explain()

— Looking for the name ‘cat and the tag ‘land’. the result

vlcsnap-2016-10-06-05h11m34s177

As you can see there is an index and the same index is being used.

Continue reading

MongoDB Indexing : Part 1


The Basics

Lets say you have a statement like

db.foo.find({x:2})

What does the server do in order to find this document?  It does an innocuous  for-each loop looking for the values, document by document ( assuming the documents were placed contiguously and there was no other logic involved in storing the document) until it finds the value (trying to make a point so I am over simplifying it).

Obviously what I have just stated is a very slow & inefficient way for searching the document. The solution is to create an Index ( as in all other modern databases). Each document has its own location on disk and an index logically holds mapping to those locations from field values.

Continue reading

MongoDB : Finding Documents


Query Criteria

Find

db.foo.find(query, projection)

Query: which documents to find

projection: Fields to be included (optional)

Example :

db.foo.find({_id:1}, {_id:1})
{"_id":1}

In the above query we have asked to return the _ID field with a matching criteria of 1

Continue reading

MongoDB CRUD Operations


Previous Article: Data Storage Internals

Create Documents

Assuming you are in the test database in Mongo and you want to find out the tables (There are no tables in Mongo) and collections (only collections) in the database.

>DB
Test
>Show collections
>db.Foo.Save({_id:1, x:10})
>db.Foo.find()
{"_id":1, "x":10}
>Show collections()
foo
system.indexes
>db.Bar.Save({_id:1, x:10})
>show collections()
Foo
Bar
System.indexes

Since it is a test DB there are no collections.

Remember that collections in Mongo defines the scope of interaction with documents

Continue reading