| Parameter | Detail |
|---|---|
hostX |
可选。可根据需要指定主机数量。例如,您可以指定多个主机,用于连接副本集。 |
:portX |
可选。如果未指定,默认值为 :27017。 |
database |
可选。如果未指定 /database,且连接字符串包含身份验证凭据,驱动程序将对管理数据库进行身份验证。 |
?options |
特定连接选项 |
Section 14.1: 使用 pymongo 连接 MongoDB
from pymongo import MongoClient
uri = "mongodb://localhost:27017/"
client = MongoClient(uri)
db = client['test_db']
# or
# db = client.test_db
# collection = db['test_collection']
# or
collection = db.test_collection
collection.save({"hello":"world"})
print collection.find_one()
Section 14.2: PyMongo 查询
一旦有了集合对象,查询就可以使用与 mongo shell 相同的语法。稍有不同的是 每个键都必须用括号括起来。例如
db.find({frequencies: {$exists: true}})
变成 pymongo (注意 True 是大写):
db.find({"frequencies": { "$exists": True }})
对象 id 或 ISODate 等对象是使用 python 类来处理的。PyMongo 使用自己的 ObjectId 类来处理对象 id,而日期则使用标准的 datetime 包。例如,如果你想查询 2010 年至 2011 年之间的所有事件,你可以这样做
from datetime import datetime
date_from = datetime(2010, 1, 1)
date_to = datetime(2011, 1, 1)
db.find({ "date": { "$gte": date_from, "$lt": date_to } }):
Section 14.3: 使用 PyMongo 更新集合中的所有文档
假设你需要为集合中的每个文档添加一个字段。
import pymongo
client = pymongo.MongoClient('localhost', 27017)
db = client.mydb.mycollection
for doc in db.find():
db.update(
{'_id': doc['_id']},
{'$set': {'newField': 10} }, upsert=False, multi=False)
查找方法会返回一个游标,使用 for in 语法可以轻松遍历该游标。然后,我们调用 update 方法,指定 _id 并添加一个字段 ($set)。参数 upsert 和 multi 来自 mongodb(更多信息请参见此处)。