サーチ…


構文

  • mongodb:// [username:password @] host1 [:port1] [、host2 [:port2]、... [、hostN [:portN]]] [/ [database] [?オプション]]

パラメーター

パラメータ詳細
hostX オプション。必要な数だけホストを指定できます。レプリカセットへの接続など、複数のホストを指定します。
:portX オプション。デフォルト値は、指定されていない場合は27017です。
データベースオプション。接続文字列に認証credentialsが含まれている場合に認証するデータベースの名前。/ databaseが指定されておらず、接続文字列に認証情報が含まれている場合、ドライバは管理データベースに対して認証されます。
?オプション接続固有のオプション

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()

PyMongoのクエリ

collectionオブジェクトを取得すると、クエリはmongoシェルと同じ構文を使用します。若干の違いがあります:

  • すべてのキーは括弧で囲む必要があります。例えば:

    db.find({frequencies: {$exists: true}})
    

    pymongoなり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 } }):
    

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)

findメソッドは、 for in構文を使用して簡単に反復処理できるCursor返します。次に、 updateメソッドを呼び出して_idを指定し、フィールド( $set )を追加します。パラメータupsertおよびmulti MongoDBの出身は( 詳細はこちらを参照します )。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow