sql >> データベース >  >> NoSQL >> MongoDB

pymongoを使用して値を更新するにはどうすればよいですか?

    ドキュメントの値を任意の値に設定する場合は、$set構文を使用できます。これにより、属性がドキュメントにすでに存在する場合は値が更新され、存在しない場合は作成されます。説明したようにディクショナリに単一の値を設定する必要がある場合は、ドット表記を使用して子の値にアクセスできます。

    pが取得されたオブジェクトの場合:

    existing = p['d']['a']
    

    pymongoバージョンの場合<3.0

    db.ProductData.update({
      '_id': p['_id']
    },{
      '$set': {
        'd.a': existing + 1
      }
    }, upsert=False, multi=False)
    

    pymongoバージョンの場合>=3.0

    db.ProductData.update_one({
      '_id': p['_id']
    },{
      '$set': {
        'd.a': existing + 1
      }
    }, upsert=False)
    

    ただし、値をインクリメントするだけでよい場合、このアプローチでは、複数のリクエストが同時に実行される可能性がある場合に問題が発生する可能性があります。代わりに、$ inc構文を使用する必要があります:

    pymongoバージョン<3.0の場合:

    db.ProductData.update({
      '_id': p['_id']
    },{
      '$inc': {
        'd.a': 1
      }
    }, upsert=False, multi=False)
    

    pymongoバージョンの場合>=3.0:

    db.ProductData.update_one({
      '_id': p['_id']
    },{
      '$inc': {
        'd.a': 1
      }
    }, upsert=False)
    

    これにより、増分が常に発生します。



    1. ハウツー:HBase Thriftインターフェースの使用、パート2:行の挿入/取得

    2. MongoDBコレクション内のすべてのドキュメントに対して単一のフィールドを選択するにはどうすればよいですか?

    3. AWS管理:MongoDBホスティングコストを30%節約する方法

    4. 文字列の「Like」に対するMongoDBC#クエリ