Jeg ser flere løsninger på dit problem:
Sjældent opdateringer
For at undgå joins, der skal gøres på klientsiden i NoSQL-databaser, skal du lægge alt i én samling. Hvis du ikke opdaterer ret ofte, kan du gøre det
{
_id,
LastAccessDate,
HasException,
Account : {
AccountID,
UserName,
Email },
Device : {
DeviceID,
DeviceCode }
}
Dette resulterer i duplikerede data, men hvis ydeevne (ingen joins) kommer før hukommelseseffektivitet, er det sandsynligvis en passende løsning for dig. Da dataene gemmes flere gange, er opdateringer mere krævende for serveren. dvs. opdatering af e-mail-adressen ser sådan ud
db.myColl.update({"Account.UserName" : "User ToUpdate"}, {"$set" : {"Account.Email" : "[email protected]"} });
Da du ikke længere behøver AccountID og DeviceID for at deltage, kan du også droppe disse to felter.
Hyppige opdateringer
Når du har hyppige opdateringer, i stedet for at integrere, kan du bruge Referencer. Jeg tror, du skal løse dem på klientsiden. Du har så tre samlinger:
Konto:
{
_id,
UserName,
Email
}
Enhed:
{
_id,
DeviceCode
}
Forening:
{
_id,
account : {
"$ref" : "Account",
"$id" : ... }
device : {
"$ref" : "Device",
"$id" : ... }
}
Du har ingen duplikering på denne måde, men du er nødt til at håndtere referencer.