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

SQLから多対多の関係をmongoDBコレクションに変換する方法は?

    あなたの問題には複数の解決策があります:

    めったに更新されない

    NoSQLデータベースでクライアント側で実行する必要がある結合を回避するには、すべてを1つのコレクションにまとめます。頻繁に更新しない場合は、更新できます

    {
       _id,
       LastAccessDate,
       HasException,
       Account : {
            AccountID,
            UserName,
            Email },
       Device : {
            DeviceID,
            DeviceCode }
    }
    

    これによりデータが重複しますが、パフォーマンス(結合なし)がメモリ効率よりも優先される場合は、おそらく適切なソリューションです。データは複数回保存されるため、サーバーの更新はより要求されます。つまりメールアドレスの更新は次のようになります

    db.myColl.update({"Account.UserName" : "User ToUpdate"}, {"$set" : {"Account.Email" : "[email protected]"} });
    

    AccountIDとDeviceIDを結合する必要がなくなったため、これら2つのフィールドを削除することもできます。

    頻繁な更新

    頻繁に更新する場合は、埋め込む代わりに参照を使用できます。クライアント側で解決する必要があると思います。次に、3つのコレクションがあります。

    アカウント:

    {
      _id,
      UserName,
      Email
    }
    

    デバイス:

    {
      _id,
      DeviceCode
    }
    

    関連付け:

    {
      _id,
      account : {
            "$ref" : "Account",
            "$id" : ... }
      device : {
            "$ref" : "Device",
            "$id" : ... }
    }
    

    この方法で重複することはありませんが、参照を処理する必要があります。




    1. MVC.netのMongoDBからObjectIdを渡す方法

    2. MongoError:最初の接続でサーバーに接続できませんでした

    3. MongoDBネイティブNode.jsドライバーを使用してdb.killOp()を実行するにはどうすればよいですか?

    4. mongodbを使用したdjangoは、移行を過去のものにしますか?