我正在处理聊天应用程序,目前正致力于设计数据库(mongoDB)。我有一个message
架构,其结构如下:
{
from : id,
to : id,
content : String,
createdAt : timeStamp
}
虽然上面的架构相当简单,但我想知道我是否可以将createdAt
更新为以下内容:
createdAt : {
year : YYYY,
month : MM,
date : DD,
hour : HH,
minute : MM,
seconds : SS
}
虽然上面的声音太多,但这可以帮助我避免在向最终用户展示时将timeStamp转换回用户友好日期的麻烦。我可以显示时间createdAt.hour + ' ' + createdAt.minute
,而不是一直new Date(timeStamp)
。
我有以下疑问:
存储对象VS timeStamp在进行数据库查询时会对性能产生任何影响。 (考虑到它们都被编入索引)
如果不是timeStamp,最适合存储实体时间的方法是什么。 (因为我已经在一些存储Date对象的博客上阅读了太多的查询速度)
PS。这是我第一次独自设计整个系统。
感谢。
答案 0 :(得分:1)
是的,它可能会导致性能影响,因为您将使用复合索引,以便您的查询使用索引扫描而不是记录扫描,并且当您在时间戳上创建单个索引时,查询变得简单并将使用索引。