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

mongodbのシーケンス番号を安全に更新する方法

    これをアトミックに行うには、3つのサンプルドキュメントすべてが同じドキュメントの一部である必要があります。 MongoDBは、単純なドキュメントに対してのみアトミックに操作を行います: http://www.mongodb.org/ display / DOCS / Atomic + Operations

    それらが単一のドキュメントの一部である場合、以下は2番目と3番目のサブドキュメントの順序を変更します。

    > db.so.find().pretty();
    {
        "_id" : ObjectId("4f55e7ba362e2f2a734c92f8"),
        "subs" : [
            {
                "author_id" : "a",
                "class" : "principle",
                "content_id" : null,
                "host_id" : null,
                "modified_date" : 1330935540,
                "order" : 1,
                "pub_date" : 1330935540,
                "score" : 0,
                "text" : "Hello World!",
                "vote_down_count" : 0,
                "vote_up_count" : 0
            },
            {
                "author_id" : "a",
                "class" : "principle",
                "content_id" : null,
                "host_id" : null,
                "modified_date" : 1330935538,
                "order" : 2,
                "pub_date" : 1330935538,
                "score" : 0,
                "text" : "Nice to meet you.",
                "vote_down_count" : 0,
                "vote_up_count" : 0
            },
            {
                "author_id" : "a",
                "class" : "principle",
                "content_id" : null,
                "host_id" : null,
                "modified_date" : 1330935548,
                "order" : 3,
                "pub_date" : 1330935548,
                "score" : 0,
                "text" : "Great!",
                "vote_down_count" : 0,
                "vote_up_count" : 0
            }
        ]
    }
    

    クエリ:

    db.so.update(
        { _id: new ObjectId("4f55e7ba362e2f2a734c92f8")},
        { $set : { 'subs.1.order' : 3, 'subs.2.order' : 2 } }
    );
    

    結果:

    > db.so.find().pretty();
    {
        "_id" : ObjectId("4f55e7ba362e2f2a734c92f8"),
        "subs" : [
            {
                "author_id" : "a",
                "class" : "principle",
                "content_id" : null,
                "host_id" : null,
                "modified_date" : 1330935540,
                "order" : 1,
                "pub_date" : 1330935540,
                "score" : 0,
                "text" : "Hello World!",
                "vote_down_count" : 0,
                "vote_up_count" : 0
            },
            {
                "author_id" : "a",
                "class" : "principle",
                "content_id" : null,
                "host_id" : null,
                "modified_date" : 1330935538,
                "order" : 3,
                "pub_date" : 1330935538,
                "score" : 0,
                "text" : "Nice to meet you.",
                "vote_down_count" : 0,
                "vote_up_count" : 0
            },
            {
                "author_id" : "a",
                "class" : "principle",
                "content_id" : null,
                "host_id" : null,
                "modified_date" : 1330935548,
                "order" : 2,
                "pub_date" : 1330935548,
                "score" : 0,
                "text" : "Great!",
                "vote_down_count" : 0,
                "vote_up_count" : 0
            }
        ]
    }
    



    1. 距離でソートされたmongodbのLineStringの近くのポイントを検索します

    2. ハッシュを安全にロードし、値が存在する場合はブール値に変換する方法

    3. Node.jsとmongodbでセッション値を保存する方法は?

    4. 集約フレームワークを使用して新しい配列フィールドを作成する方法