以发布任务为主要目的,显示为“待办事项”或“已完成”,如何更好地构建以下对象的 NoSQL DB:
- 创建的日期时间不为空
- 任务 ID不为空
- 任务 ID 作为 Str Not Null
- 任务标题不为空
- 任务描述
- 到期时间和/或日期
- 用户不为空
- ID不为空
- ID 作为 Str Not Null
- 名称不为空
- 用户名不为空
- 地点
- 联系人计数
- 创建日期不为空
- UTC 偏移量不为空
- 时区不为空
- 地理启用不为空
- 已验证
- 任务计数不为空
- 语言不为空
- 地理位置
- 坐标
- 地方
- 与谁共享
- ?
- 任务状态
- 标记完成
- 自动移动到完成(因为 datetime-due 已通过)
- 标记(真/假)
- 已编辑
- 编辑计数
- 编辑日期时间
- 已删除
用户可以发布无限数量的任务,并且可以在用户之间共享任务。如何最好地捕捉这种关系?
任务可以手动“标记为完成”,或“自动标记”和“自动移至完成”,因为到期日期时间已过。
编辑和删除也将被记录。
作为一个起点,以下模式的优点和/或缺点是什么(主要关注可扩展性):
{
"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,
}