【问题标题】:How to store user actions in MeteorJs using MongoDB?如何使用 MongoDB 在 MeteorJs 中存储用户操作?
【发布时间】:2023-03-09 22:44:01
【问题描述】:
我在一个项目中使用 Meteor JS,所以我天生就在使用 MongoDB。我正在存储用户的签入和签出操作。我目前将它们作为单独的文档存储在集合中。每个动作包含 3 个字段;进出,行动时间和用户ID。是最好的方法吗?我应该每个成员只有一个文档,然后将每个操作存储在一个数组中吗?还有其他方法吗?我预计有数百名成员,但希望将来有数千名成员。谢谢。
【问题讨论】:
标签:
javascript
arrays
performance
mongodb
meteor
【解决方案1】:
根据经验,从长远来看,我可以说存储记录而不是数组是更好的选择。
就 Meteor 而言,它的反应性处理集合记录,但不处理数组中的单个字段。换句话说,如果一个元素被添加到用户对象的checkins 数组中,则整个用户对象需要与客户端同步。如果您改为存储记录,则出版物只会发送新添加的记录。
就 MongoDB 而言,文档大小限制为 16MB。不确定签入和签出的频率,但如果将它们存储在数组中,您可能会在某个时候遇到该限制。
记录也比数组更容易访问。
有关详细信息,请参阅 Bulletproof Meteor 中的 MongoDB data modeling 和 Database modeling。