使用Python来使用NoSQL数据库MongoDB – 总结pymongo的基本用法
pymongo是用于在Python中使用MongoDB的库。我试图总结基本的用法,请指正任何错误。我会随时更新。当前版本为3.5.1。
懂一定程度英文的人可以直接阅读以下网页:
http://api.mongodb.com/python/
本文概要
下面是基本的RDB select和insert的方法介绍。
关于MongoDB的基本数据结构,请参考以下链接:
https://qiita.com/yuji0602/items/c55e2cb75376fd565b4e
使用pip进行安装和升级
安装
python -m pip install pymongo
如果要指定版本,请参考以下。
python -m pip install pymongo==3.1.1
更新
python -m pip install --upgrade pymongo
备好
为了执行对MongoDB的命令(查询),请导入“MongoClient”。
如果要使用自己本地的MongoDB,请按如下方式准备MongoClient。
第一个参数是地址,第二个参数是端口号。MongoDB的默认端口号是27017。
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
你也可以使用URL进行指定。
client = MongoClient('mongodb://localhost:27017/')
调用数据库
使用MongoClient来调用数据库。
以下是调用MongoDB中名为”test_database”的数据库。
db = client.test_database
如果MongoDB中不存在名为”test_database”的数据库,则会自动创建。
如果想在循环等情况下更改名称并进行引用,这样做非常方便。
db = client['test-database']
呼叫集合
使用MongoClient调用数据库中的集合。
集合相当于关系型数据库中的表。
如果不存在集合,将自动创建。
collection = db.test_collection
可以像数据库一样使用以下格式。
collection = db['test-collection']
关于文件的内容
MongoDB的数据以以下的JSON格式存储。
有关JSON的更多信息,请参考以下链接:
https://thinkit.co.jp/article/70/1
import datetime
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"date": datetime.datetime.utcnow()}
在关系型数据库中,行被称为文档,列被称为字段。
在上述内容中,”post”本身就是【文档】。
而”post”中的”author”和”text”等都是【字段】。
将文件插入到收藏夹中。
将事先调用的集合”collection”中准备好的”post”插入。
返回值是在pymongo中定义的”InsertOneResult”实例。
#idは自動で一意に振り分けられる
result1 = collection.insert_one(post)
如果您想存储多个文档,可以使用「insert_many()」方法
new_posts = [{"author": "Mike",
"text": "Another post!",
"tags": ["bulk", "insert"],
"date": datetime.datetime(2009, 11, 12, 11, 14)},
{"author": "Eliot",
"title": "MongoDB is fun",
"text": "and pretty easy too!",
"date": datetime.datetime(2009, 11, 10, 10, 45)}]
result2 = collection.insert_many(new_posts)
选取集合内的文档。
使用find方法进行引用。
如果只想引用一个文件的话
使用 find_one() 方法。
print(collection.find_one())
在以下输出中,请在find_one()的括号内指定要引用的文档,如果不指定,则引用集合中的第一个文档。
#出力
{u'_id': ObjectId('...'),
u'author': u'Mike',
u'date': datetime.datetime(...),
u'tags': [u'mongodb', u'python', u'pymongo'],
u'text': u'My first blog post!'}
如果想引用字段”author”为”Mike”的文档,请按照以下方式操作。
collection.find_one({"author": "Mike"})
如果您想引用多个文档,
使用find()方法。
返回一个在pymongo中定义的Cursor实例。
for post in collection.find():
print(post)
下面,输出
{u'_id': ObjectId('...'),
u'author': u'Mike',
u'date': datetime.datetime(...),
u'tags': [u'mongodb', u'python', u'pymongo'],
u'text': u'My first blog post!'}
{u'_id': ObjectId('...'),
u'author': u'Mike',
u'date': datetime.datetime(...),
u'tags': [u'bulk', u'insert'],
u'text': u'Another post!'}
{u'_id': ObjectId('...'),
u'author': u'Eliot',
u'date': datetime.datetime(...),
u'text': u'and pretty easy too!',
u'title': u'MongoDB is fun'}