如果其中一个字段存在于mongoid中的另一个模型中,则获取一个对象数组

时间:2014-04-15 22:34:41

标签: model mongoid exists

我正在尝试这样做:

我有一个用户模型,一个消息模型

对于某个用户,他/她可能有很多消息(存储在数组中)。

现在我想获取用户收到的所有消息,但需要检查发送消息的用户是否仍在数据库中。

过程是:

用户有一个收件箱,它是一个数组,并存储其他人发送给用户的所有邮件。

该消息包含from_user,它是已发送用户的id(字符串)。如果删除了该用户,则该消息将保留在系统中。

所以我想做一个这样的查询:

Message.find(thisUser.inbox).where(用户的id存在于模型中)

这意味着在从消息模型获取记录时检查用户的ID是否存在

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:0)

您描述的功能类似于联接。在MongoDB中,有两种替代方法,

  • 将一个模型嵌入到另一个
  • 将查询拆分为两个单独的

我认为第一种选择在这里是脱离背景的。

所以我建议的解决方案是

user = User.find(user_id)
messages = Message.where(user_id: user.id)