我使用Meteor JS进行项目本身就是我使用MongoDB。我存储了用户的签入和签出操作。我目前将它们作为单独的文档存储在集合中。每个动作包含3个字段;进出时间,行动时间和用户ID。是最好的方式吗?我应该每个成员只有一个doc,然后将每个动作存储在一个数组中吗?还有另外一种方法吗?我预计会有数百名会员,但希望未来有数千名会员。感谢。
答案 0 :(得分:0)
从经验来看,我可以说从长远来看,存储记录而不是数组是更好的选择。
就Meteor而言,其反应性处理集合记录,但不处理数组中的单个字段。换句话说,如果将一个元素添加到用户对象的checkins
数组中,则需要将整个用户对象与客户端同步。如果您存储记录,则发布将仅发送新添加的记录。
就MongoDB而言,文档大小限制为16MB。不确定您的签入和签出的频率,但如果将它们存储在一个数组中,您可能会在某些时候遇到这种限制。
记录也比数组更容易访问。
有关详细信息,请参阅Bulletproof Meteor中的MongoDB data modeling和Database modeling。