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

Model 如果mongoid中的一个字段存在于另一个模型中,则获取对象数组,model,mongoid,exists,Model,Mongoid,Exists,我正在尝试这样做: 我有一个用户模型,一个消息模型 对于某个用户,他/她可能有很多消息(存储在数组中) 现在我想获取用户收到的所有消息,但需要检查发送消息的用户是否仍在数据库中 这个过程是: 用户有一个收件箱,它是一个数组,存储其他人发送给用户的所有消息 该消息包含一个from_user,它是发送用户的id(字符串)。如果用户已被删除,则消息将保留在系统中 所以我想做一个如下的查询: Message.find(thisUser.inbox)。其中(模型中存在用户的id) 这意味着在从消息模型获取

我正在尝试这样做:

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

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

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

这个过程是:

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

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

所以我想做一个如下的查询:

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

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

我该怎么做


谢谢大家!

您描述的功能类似于连接。在MongoDB中,这种行为有两种选择

  • 将一个模型嵌入到另一个模型
  • 将查询拆分为两个单独的查询
我认为第一种选择是断章取义的

所以我建议的解决办法是

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