• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

MongoBB

date: 2018-09-25 excerpt: MongoDBの使い方

tag: MongoDB


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)

参考

  • mongo/dockerhub.com


MongoDB Share Tweet