Mongodb 嵌入不断增长的文档

Mongodb 嵌入不断增长的文档,mongodb,Mongodb,我想使用MongoDB记录我们服务中所有用户的活动日志 目前,我们的结构如下: { '_id' : 'user_id', 'activites' : [ {time : blah blah, action : blah blah, ...}, {time : blah blah, action : blah blah, ...}, {time : blah blah, action : blah blah, ...}, ]

我想使用MongoDB记录我们服务中所有用户的活动日志

目前,我们的结构如下:

{
    '_id' : 'user_id',
    'activites' : [
        {time : blah blah, action : blah blah, ...},
        {time : blah blah, action : blah blah, ...},
        {time : blah blah, action : blah blah, ...},
    ]
}
但是我们发现,嵌入式文档的增长会导致更新性能的降低

现在我们正在考虑对数据模式进行更改,即将嵌入的文档迁移到单独的集合,并使用引用模型

但是,如果我们改变结构,仍然存在问题

(1) 参考文献的数量仍在增长。我们能避免性能问题吗? (2) 如果停止使用引用,select性能将降低


有什么好主意吗?

将数据存储在单个文档中总是错误的,因为文档的大小有限制(16MB)

我建议您只参考activites集合中的用户id,如:

{
     '_id': 'activity_id',
     'user_id': 'user_id',
     'time': ...,
     'action: ...,
     ...
}
确保为“user_id”添加了索引,如果您总是在多个字段上进行查询,比如{user_id:user_id,time:{$gt:blah blah},则按照查询中的顺序在所有字段上创建索引,在这种情况下:(user_id:1,time:-1)(如果您总是按时间降序排序)