我必须具有以下属性的对象(仅相关):
主题:_id,messageIds [],
回复:_id,creatorId(字符串),topicId,
我想做的是查询特定用户创建的回复(creatorId),但将记录限制为仅根据特定主题返回该用户的最新消息。由于用户可能在一个主题中回答了多次,因此我只希望他们回答的每个主题都最新。
我知道如何从暴力角度执行此操作(涉及执行两个或多个单独的查询),但是我不确定在查询参数中是否存在执行此操作的能力。如果有人能对此提供一些见识或经验,我将不胜感激。让我知道您是否还有其他问题,或者是否有其他遗漏。
最佳答案
我可能会漏掉这一点,但是假设您的_id
是单调的(对mongos的ObjectId
而言是正确的)
db.replies.find({"topicId" : yourTopicId, "creatorId" : yourCreatorId}).
sort({"_id" : -1}).limit(1);
这将找到特定作者对特定主题的最新回复。如果
_id
类型不是单调的,则说明您不走运,您可能必须调查主题中的messageIds
列表。