我有朋友
的集合- userId: user id
- Friends: array of user ids
用户
- _id: userId
- Last Login
- Other User info fields
如果用户正在浏览我的网站,则每5分钟更新一次上次登录字段。
现在我有逻辑,我从朋友集合的朋友那里获取用户ID,然后使用该ID查询用户集合以获取用户信息。
增加:此外,在未来的版本中,我想补充说,用户不仅可以添加朋友,还可以添加来自其他集合的宠物,因此朋友嵌入式阵列看起来像{UserId,PetId}
但是对于下一个版本,我想添加新功能,我会按照上次登录的顺序显示朋友。
我认为可行的解决方案
还有哪些其他方法可以解决我的问题?
答案 0 :(得分:1)
如下所示的简单查询不起作用?
var someId = ObjectId("52758653cbd6ca816ca0ee1b")
var friends = db.friends.findOne({"userId": someId}, {"_id": 0, "friends": 1}).friends
db.users.find(
{_id: {$in: friends }}
).sort({lastLogin: -1})