Re: What is the better way to implement shared record with ability to remove it by each user

From: Kevin Adistambha <kevinadi@xxxxxxxxxxx>
To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Date: Mon, 9 May 2016 22:30:47 -0700 (PDT)
Why ads?


Hi Igor,

A Letter can be sent in a context of Topic that is shared between group of 
users.

So, the Topic model has the following structure:

   - _id
      - name (String) 
      - users_ids (Array of users ids, that can send letters withing this 
      topic) 
   
Also, each user can remove a letter for himself. 

Both of your concerns for the two variants you posted was correct. The $nin 
query in variant 1 cannot use an index, hence performance will likely 
suffer. Additionally in variant 2:


   - _id (ObjectId)
      - text (String) 
      - topic_id (ObjectId) 
      - accesible_for_users_ids (Array) 
   
If a letter is accessible to all users by default, you would have to insert 
the whole user array into the accesible_for_users_ids field every time a 
new letter is inserted. If your user array is large, these inserts will be 
expensive. This may not be ideal for performance reasons.

If applicable to your use case, you may find the Socialite 
<https://github.com/mongodb-labs/socialite> project useful as a guide. 
Socialite explores the design, scaling, and challenges of creating a social 
network status feed in a series of presentations in MongoDB World 2014 
<https://www.mongodb.com/mongodb-world-2014/presentations>. The 
presentation series consists of:

   1. Design overview and scaling 
   <https://www.mongodb.com/presentations/socialite-open-source-status-feed-part-1-design-overview-and-scaling-infinite-content
   2. Managing the social graph 
   <https://www.mongodb.com/presentations/socialite-open-source-status-feed-part-2-managing-social-graph
   3. Scaling the data feed 
   <https://www.mongodb.com/presentations/socialite-open-source-status-feed-part-3-scaling-data-feed

Best regards,
Kevin


-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/165950ea-1d42-42cb-9b0a-6fe1c1122acd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?