In [12]:
from pymongo import MongoClient
client = MongoClient('mongodb://localhost:27017/')
In [13]:
client.phonebook.collection_names()
Out[13]:
In [14]:
db = client.phonebook
In [15]:
col = db.people
In [22]:
col.insert({'name': 'Alessandro', 'phone': '+39333333'})
Out[22]:
In [24]:
import bson
bson.ObjectId('575fc3369d1fa214962baad3').generation_time
Out[24]:
In [28]:
bson.ObjectId() #this creates a new bson object everytime it is executed
Out[28]:
In [30]:
col.insert({'name': 'someoneelese', 'phone': '+34434345', 'phone2': '+232456'}, w=0, j=False) #this document has a different format from the first one (one more field)
Out[30]:
In [32]:
col.find_one({'name': 'Alessandro'}) #find first value equality
Out[32]:
In [34]:
list(col.find({'name': 'Alessandro'})) #find all value equality
Out[34]:
In [42]:
cursor = col.find({'name': 'Alessandro'}) #can also use it as a generator
In [44]:
cursor.next()
Out[44]:
In [46]:
col.find_one({'name': 'Alessandro'}, {'phone': True}) #this is a projection
Out[46]:
In [50]:
col.remove({'name': 'Alessandro'})
col.insert_one({'name': 'Alessandro', 'phone': '1'})
col.insert_one({'name': 'Alessandro', 'phone': '2'})
col.insert_one({'name': 'Alessandro', 'phone': '3'})
list(col.find({'name': 'Alessandro'}))
#remove all entries Alessandro and add 3 noew ones with different phone number
Out[50]:
In [53]:
col.find_one({'_id': {'$gt': bson.ObjectId('575fd53c9d1fa214962baae1')}}) #retrieve first entries with number higher than ObjectID of the first entry
Out[53]:
In [54]:
list(col.find({'name': {'$regex': '^O'}}))
Out[54]:
In [55]:
col.update({'name': 'Alessandro'}, {'name': 'Giovanni'}) #changes one document from Alessandro to Giovanni
Out[55]:
In [57]:
col.update({'name': 'Alessandro'}, {'name': 'Giovanni'}) #changes all document from Alessandro to Giovanni
Out[57]:
In [62]:
col.find_one({'name': 'Giovanni'}
Out[62]:
In [59]:
col.find({'name': 'Alessandro'}).count()
Out[59]:
In [60]:
col.update({'name': 'Giovanni'}, {'$set': {'phone': '+23244322'}}) #
Out[60]:
In [64]:
col.find_one({'name': 'Giovanni'})
Out[64]:
In [67]:
doc = col.find_one({'name': 'Giovanni'})
doc['phone'] = 5
col.save(doc)
print doc
In [68]:
col.update({'name': 'Alessandro'}, {'$set': {'name': 'Someone'}}, multi= True)
Out[68]:
In [69]:
list(col.find({'name': 'Someone'}))
Out[69]:
In [71]:
post = {
'title': 'First post',
'author':{
'name': 'Alessandro',
'surname': 'Molina',
'avatar': 'https://blog.madmimi.com/wp-content/uploads/2014/06/gary_gravatar.png'
},
'tags': ['mongodb', 'web', 'scaling']
}
db.blog.insert(post)
Out[71]:
In [72]:
db.blog.find_one({'tags': 'mongodb'})
Out[72]:
In [73]:
db.blog.find_one({'author.name': 'Alessandro'}) #query on subdocs
Out[73]:
In [89]:
class MyClass():
def __init__(self, x, y):
self.x = x
self.y = y
c = MyClass(1,2)
print c.__dict__
db.blog.insert(c.__dict__)
Out[89]:
In [ ]: