1. 安装pymongo
git clone git://github.com/mongodb/mongo-python-driver.git pymongo
cd pymongo/
python setup.py install
2. 测试pymongo
>>> from pymongo import *
>>> conn = Connection()
>>> db = conn['test']
>>> col = db['foo']
>>> col.insert({'a':1})
ObjectId('4d4d64bd52574014c0000001')
>>> col.find_one()
{u'a': 1.0, u'_id': ObjectId('4d4d3e18d29190b1256914e6')}
3. SQL to pymongo mapping
仿照http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart ,整理了一份SQL命令到pymongo方法的映射
SQL Statement | pymongo Statement |
---|---|
CREATE TABLE users (name VARCHAR(64), age INT); | from pymongo import * conn = Connection(host, port) db = conn[dbname] users = db['users'] |
INSERT INTO users VALUES('tom', 30); | users.insert({'name':'Tom', 'age':30}) |
SELECT * FROM users; | users.find() |
SELECT name, age FROM users; | users.find({}, {'name':1, 'age':1}) |
SELECT * FROM users WHERE age = 30; | users.find({'age':30}) |
SELECT name, age FROM users WHERE age = 30; | users.find({'age':30}, {'name':1, 'age':1}) |
SELECT * FROM users WHERE age = 30 ORDER BY name ASC, age DESC; | users.find({'age':30}).sort([('name',ASCENDING), ('age',DESCENDING)]) |
SELECT * FROM users WHERE age > 30; | users.find({'age':{'$gt':30}}) |
SELECT * FROM users WHERE age > 30 AND age <= 40; | users.find({'age':{'$gt':30, '$lte':40}}) |
SELECT * FROM users WHERE age IN(30,40); | users.find({'age':{'$in':[30,40]}}) |
SELECT * FROM users WHERE name LIKE 'Tom%'; | users.find({'name':{'$regex':'^Tom'}}) |
SELECT * FROM users WHERE age = 30 AND name = 'Tom'; | users.find({'age':30, 'name':'Tom'}) |
SELECT * FROM users WHERE age = 30 OR name = 'Tom'; | users.find({'$or':[{'age':30}, {'name':'Tom'}]}) |
CREATE INDEX idx_name ON users (name, age DESC); | users.create_index([('name',ASCENDING), ('age',DECENDING)], unique=T/F, dropDups=T/F) |
ALTER TABLE users DROP INDEX idx_name; | users.drop_index(idx_name) |
EXPLAIN SELECT … | users.find(…).explain() |
SELECT DISTINCE name FROM users; | users.distinct('name') |
SELECT COUNT(*) from users; | users.count() |
SELECT COUNT(*) from users WHERE … | users.find(…).count() |
UPDATE users SET age = 31 WHERE name = 'Tom'; | users.update({'name':'Tom'}, {'$set': {'age':31}}) |
UPDATE users SET age=age+1 WHERE name = 'Tom'; | users.update({'name':'Tom'}, {'$inc': {'age':1}}) |
REPLACE INFO… | users.update({'name':'Tom'}, {'$set': {'age':31}}, True) |
DELETE from users; | users.remove() |
DELETE form users WHERE name = 'Tom'; | users.remove({'name':'Tom'}) |
DROP TABLE users; | users.drop() |
Reference: http://api.mongodb.org/python/1.9%2B/tutorial.html