【发布时间】:2013-11-03 16:32:36
【问题描述】:
我有收藏朋友
- userId: user id
- Friends: array of user ids
以及用户
- _id: userId
- Last Login
- Other User info fields
如果用户正在浏览我的网站,则最后登录字段每 5 分钟更新一次。
现在我的逻辑是从 friend 集合中的朋友那里获取用户 ID,然后使用该 ID 查询 user 集合以获取用户信息。
添加:此外,在未来的版本中,我将添加用户不仅可以添加用户,还可以添加其他集合中的宠物,因此朋友嵌入数组看起来像 {UserId, PetId}
但对于下一个版本,我想添加新功能,以便显示按上次登录排序的朋友。
我认为可行的解决方案
- map reduce on select - 易于实施,但可能会出现性能问题
- Map reduce on update - 在这种情况下,我可能会使用属性“out”在每次更新时写入新集合,因此我将拥有包含所有我需要的信息的新集合 Friend.reduced,然后我可以通过索引轻松查询它
- 将新属性 Last Update 添加到好友列表集合,使其看起来像 {FriendId, LastUpdate} 逻辑很容易在业务级别实现。
还有哪些其他方法可以解决我的问题?
【问题讨论】:
标签: mongodb