Partition MongoDB Atlas Data into Realms

Viewed 122

I'm stuck on how to define a partition key correctly to achieve the desired result for my use case. For reference, I'm looking at the mongoDB documentation here: https://docs.mongodb.com/realm/sync/partitioning/

Use case...

collection user: [
   { user_id : "user_1", displayName : "John", email : "john@test.com" }
   { user_id : "user_2", displayName : "Jane", email : "dale@test.com" }
   { user_id : "user_3", displayName : "Adam", email : "adam@test.com" }   
]

collection document: [
   { createdBy: user_1, title : "Document A", readPermission: [user_1], writePermission[user_1] }
   { createdBy: user_1, title : "Document B", readPermission: [user_2], writePermission[user_1] }
   { createdBy: user_2, title : "Document C", readPermission: [user_2], writePermission[user_1, user_2] }
]

The desired results would be as follows:

realm user_1: [
   { item: "A4", partitionKey: "salesperson=Jeff", volume: 15, customer: "mom" }
       { createdBy: user_1, title : "Document A", readPermission: [user_1], writePermission[user_1] }
       { createdBy: user_1, title : "Document B", readPermission: [user_2], writePermission[user_1] }
       { createdBy: user_2, title : "Document C", readPermission: [user_2], writePermission[user_1, user_2] }
]

realm user_2: [
       { user_id : "user_2", displayName : "Jane", email : "dale@test.com" }
       { createdBy: user_1, title : "Document B", readPermission: [user_2], writePermission[user_1] }
       { createdBy: user_2, title : "Document C", readPermission: [user_2], writePermission[user_1, user_2] }
]

realm user_3: [
]       { user_id : "user_3", displayName : "Adam", email : "adam@test.com" }   

My use case is such that the users in a documents readPermission and writePermission can be updated by users sharing and removing sharing privileges with other users.

Any one have any ideas on how I might be able to achieve this?

0 Answers
Related