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

埋め込まれたドキュメントの「upsert」

    $ addToSetを使用して、重複する配列要素がないことを確認してセットに追加できますが、これは「更新」の場合には機能しません。

    やりたいことを行うには、データ構造を次のように変更する必要があります。

    {
        "_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
        "component_id" : 1,
        "_locales" : {
            "nl_NL" : {
                "url" : "dutch"
            }
        }
    }
    

    これで、次のコマンドだけでnl_NLロケールを更新できます。

    db.components.update( { component_id: 1 }, { $set: { '_locales.nl_NL.url' : 'new url' } }, true );
    

    また、次のような新しいロケールも機能します:

    db.components.update( { component_id: 1 }, { $set: { '_locales.en_US.url' : 'American' } }, true );
    

    次のように、ネストされたオブジェクトの一部としてロケールを使用することも検討してください。

    {
        "_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
        "component_id" : 1,
        "_locales" : {
            "nl_NL" : {
                "url" : "dutch"
                "locale" : "nl_NL"                 
            }
        }
    }
    

    これにより、場合によってはデータの取得が容易になります。




    1. SpringDataMongoリポジトリ::すべてのリポジトリの問題に共通の共有メソッド

    2. フィールド名にドットを使用する方法は?

    3. Stackexchange.redisにはWAITサポートがありません

    4. MongoDB C#ドライバーを使用したポリモーフィック型の逆シリアル化