MongoDBの使い方
概要
- いろいろマネージメントされたKVS
- 一般的にはドキュメント志向のデータベースと呼ばれる
- 非同期アクセスが可能なので便利
- ファイルシステムに頼らなくても大丈夫
インストール
- ubuntuでのパッケージはリリースが遅い
dockerで実行する場合
$ docker run -p 27017:27017 -v mongo-data:/data/db -it mongo
pythonクライアント
$ conda install -c anaconda pymongo
$ python3 -m pip install pymongo
基本的な使い方
レコードの追加と検索
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client['database']
collection = db['collection']
import datetime
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"date": datetime.datetime.utcnow()}
# レコードを一件追加
result1 = collection.insert_one(post)
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)
print(collection.find_one())
"""
出力: {'_id': ObjectId('62aab6bd66c7ffc22ae6caff'), 'author': 'Mike', 'text': 'My first blog post!', 'tags': ['mongodb', 'python', 'pymongo'], 'date': datetime.datetime(2022, 6, 16, 4, 51, 9, 373000)}
"""
print(collection.find_one({"author": "Eliot"}))
"""
出力: {'_id': ObjectId('62aab6bd66c7ffc22ae6cb01'), 'author': 'Eliot', 'title': 'MongoDB is fun', 'text': 'and pretty easy too!', 'date': datetime.datetime(2009, 11, 10, 10, 45)}
"""
すべての要素を取りです
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client['database']
collection = db['collection']
for post in collection.find():
print(post)