Skip to content

Instantly share code, notes, and snippets.

@bchirico
Created November 21, 2013 10:48
Show Gist options
  • Save bchirico/7579614 to your computer and use it in GitHub Desktop.
Save bchirico/7579614 to your computer and use it in GitHub Desktop.
from pymongo import MongoClient
import sys
import datetime
client = MongoClient('localhost', 27017)
db = client.school
scores = db.score
def removeDate():
print "\nremove all date\n"
query = {}
try:
scores.update({}, {'$unset': {'review_date': 1}}, multi=True)
except:
print "Unexpected error", sys.exc_info()[0]
def using_save():
print "command save"
query = {'student_id': 1, 'type': 'exam'}
try:
score = scores.find_one(query)
print "before", score
score['review_date'] = datetime.datetime.utcnow()
scores.save(score)
score = scores.find_one(query)
print "after", score
except:
print "Unexpected error", sys.exc_info()[0]
raise
def using_update():
print "command update"
query = {'student_id': 1, 'type': 'exam'}
try:
score = scores.find_one(query)
print "before", score
score['review_date'] = datetime.datetime.utcnow()
#sovrascrive l'intero documento
scores.update(query, score)
score = scores.find_one(query)
print "after", score
except:
print "Unexpected error", sys.exc_info()[0]
raise
def using_set():
print "command set"
query = {'student_id': 1, 'type': 'exam'}
try:
score = scores.find_one(query)
print "before", score
# piu efficiente perche setta solo il campo desiderato senza sovrascrive gli altri
scores.update(query, {'$set': {'review_date': datetime.datetime.utcnow()}})
score = scores.find_one(query)
print "after", score
except:
print "Unexpected error", sys.exc_info()[0]
raise
removeDate()
using_save()
removeDate()
using_update()
removeDate()
using_set()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment