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

mongodbドキュメントをロックすることはできません。必要な場合はどうなりますか?

    ちょっと私が今思う唯一の方法は、ステータスパラメータを追加し、ドキュメントをアトミックに変更できるようにする操作findAndModify()を使用することです。少し遅いですが、うまくいくはずです。

    したがって、ステータス属性を追加し、ドキュメントを取得するときにステータスを「IDLE」から「PROCESSING」に変更するとします。次に、ドキュメントを更新してコレクションに保存し直し、ステータスを「IDLE」に再度更新します。

    コード例:

    var doc = db.runCommand({
                  "findAndModify" : "COLLECTION_NAME",
                  "query" : {"_id": "ID_DOCUMENT", "status" : "IDLE"},
                  "update" : {"$set" : {"status" : "RUNNING"} }
    }).value
    

    COLLECTION_NAMEとID_DOCUMENTを適切な値に変更します。デフォルトでは、findAndModify()は古い値を返します。これは、ステータス値がクライアント側で引き続きIDLEであることを意味します。したがって、更新が完了したら、すべてを再度保存/更新するだけです。

    注意が必要なのは、一度に1つのドキュメントしか変更できないということだけです。

    お役に立てば幸いです。



    1. MongoDB $ orderBy

    2. MongoDBマルチキーインデックスとインデックス交差境界

    3. Flask-SocketIOredisサブスクライブ

    4. CouchbaseDbaの便利なスクリプト