#!/usr/bin/env python
# coding:utf-8
# Filename:mongodb.py
from pymongo import MongoClient,ASCENDING,DESCENDING
import datetime
# connection with mongoclient
client=MongoClient()
# getting a database
db=client.test
# getting a collection
collection=db.posts
# documents
post={"author":"Mike",
"test":"My first blog post!",
"tags":["mongodb","python","pymongo"],
"date":datetime.datetime.utcnow()
}
# inserting a document
post_id=collection.insert(post)
print 'posts id is:',post_id
print 'collection_names is:',db.collection_names()
# getting a single document
doc=db.posts.find_one()
print doc
#query by objectId
print 'query is:', db.posts.find_one({"_id":post_id})
# querying for more than one doc
for post in db.posts.find():
print post
# counting
print 'total count is:',db.posts.count()
# range queries
d=datetime.datetime(2014,8,9,12)
for post in db.posts.find({"date":{"$gt":d}}).sort("author"):
print 'gt is:',post
# Indexing
# before indexing
print db.posts.find({"date":{"$gt":d}}).sort("author").explain()["cursor"]
print db.posts.find({"date":{"$gt":d}}).sort("author").explain()["nscanned"]
# after indexing
db.posts.create_index([("date",DESCENDING),("author",ASCENDING)])
print db.posts.find({"date":{"$gt":d}}).sort("author").explain()["cursor"]
print db.posts.find({"date":{"$gt":d}}).sort("author").explain()["nscanned"]
# remove all indexes
db.posts.drop_indexes()