我必须拥有以下属性的对象(仅显示相关内容):
主题:_id,messageIds [],
回复:_id,creatorId(String),topicId,
我要做的是查询特定用户(creatorId)创建的回复,但将记录限制为仅返回每个特定主题的该用户的最新消息。由于用户可能在主题中多次回复,因此我只希望他们回复的每个主题都是最新的。
我知道如何从暴力角度(涉及执行两个或多个单独的查询)执行此操作,但我不确定是否有能力在查询参数中执行此操作。如果有人能提供一些见解或经验,我将不胜感激。如果您有任何其他问题,或者我遗漏了详细信息,请与我们联系。
答案 0 :(得分:0)
我可能会忽略这一点,但假设你的_id
是单一的(对于mongos'ObjectId
来说是真的),那么
db.replies.find({"topicId" : yourTopicId, "creatorId" : yourCreatorId}).
sort({"_id" : -1}).limit(1);
这将找到特定作者对特定主题的最新回复。如果_id
类型不是单一的,那么您运气不好,您可能需要调查主题中messageIds
的列表。