title: What's is recommended for a To-Do List schema design for MongoDB?
body: <p>With the main purpose of posting Tasks, displayed as either 'to-do' or 'done', how would one better structure a NoSQL DB of the following objects:</p>
  
  <ul>
  <li>Datetime Created <em>Not Null</em></li>
  <li>Task ID <em>Not Null</em></li>
  <li>Task ID as a Str <em>Not Null</em></li>
  <li>Task Title <em>Not Null</em></li>
  <li>Task Description</li>
  <li>Time &amp;/or Date Due</li>
  <li>User <em>Not Null</em>
  <ul>
  <li>ID <em>Not Null</em></li>
  <li>ID as a Str <em>Not Null</em></li>
  <li>Name <em>Not Null</em></li>
  <li>Username <em>Not Null</em></li>
  <li>Location</li>
  <li>Contacts Count</li>
  <li>Date Created <em>Not Null</em></li>
  <li>UTC Offset <em>Not Null</em></li>
  <li>Time Zone <em>Not Null</em></li>
  <li>Geo-Enabled <em>Not Null</em></li>
  <li>Verified</li>
  <li>Task Count <em>Not Null</em></li>
  <li>Language <em>Not Null</em></li>
  </ul></li>
  <li>Geo-Location
  <ul>
  <li>Coordinates</li>
  <li>Place</li>
  </ul></li>
  <li>Shared with Whom
  <ul>
  <li>?</li>
  </ul></li>
  <li>Task Status
  <ul>
  <li>Marked Done</li>
  <li>Auto-Moved to Done (because datetime-due is passed)</li>
  <li>Labeled (True/False)</li>
  <li>Edited</li>
  <li>Edit Count</li>
  <li>Edit Datetime</li>
  <li>Deleted</li>
  </ul></li>
  </ul>
  
  <p>Users can post an unlimited number of Tasks, and Tasks can be shared between users. How is this relationship best captured?</p>
  
  <p>Tasks can be manually 'marked done', or 'auto-labeled' and 'auto-moved-to-done' because the date-time due is passed.</p>
  
  <p>Edits &amp; Deletes are to be recorded as well.</p>
  
  <p>As a starting place, what are the upsides &amp;/or downsides of the following schema (with scalability a prime focus):</p>
  
  <pre><code>{
     "created_at":"Day Mon ## 00:00:00 +0000 20##",
     "id":#####,
     "id_str":"#####",
     "title":"This is a title",
     "description":"The description goes here..",
     "date_due":"Day Mon ## 00:00:00 +0000 20##",
     "user":{
        "id":####,
        "id_str":"####",
        "name":"Full Name",
        "user_name":"Username",
        "location":"",
        "contacts_count":101,
        "created_at":"Day Mon ## 00:00:00 +0000 20##",
        "utc_offset":####,
        "time_zone":"Country",
        "geo_enabled":true,
        "verified":false,
        "task_count":101,
        "lang":"en",
     },
     "geo":?,
     "coordinates":?,
     "place":?,
     "shared_with":?,
     "moved_done":false,
     "marked_done":false,
     "edited":false,
     "deleted":false,
  }
  </code></pre>