sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo convertir una relación de muchos a muchos de SQL a la colección mongoDB?

Veo varias soluciones para su problema:

Actualizaciones raras

Para evitar uniones, que deben hacerse del lado del cliente en bases de datos NoSQL, coloque todo en una colección. Si no actualizas muy a menudo, podrías hacerlo

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

Esto da como resultado datos duplicados, pero si el rendimiento (sin uniones) se antepone a la eficiencia de la memoria, probablemente sea una solución adecuada para usted. Dado que los datos se almacenan varias veces, las actualizaciones son más exigentes para el servidor. Es decir. actualizar la dirección de correo electrónico sería

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

Como ya no necesita el ID de cuenta ni el ID de dispositivo para unirse, también puede eliminar estos dos campos.

Actualizaciones frecuentes

Cuando tenga actualizaciones frecuentes, en lugar de incrustaciones, puede usar Referencias. Creo que tienes que resolverlos del lado del cliente. Entonces tienes tres colecciones:

Cuenta:

{
  _id,
  UserName,
  Email
}

Dispositivo:

{
  _id,
  DeviceCode
}

Asociación:

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

No tienes ninguna duplicación de esta manera, pero tienes que lidiar con las referencias.