我必须具有以下属性的对象(仅相关):

主题:_id,messageIds [],

回复:_id,creatorId(字符串),topicId,

我想做的是查询特定用户创建的回复(creatorId),但将记录限制为仅根据特定主题返回该用户的最新消息。由于用户可能在一个主题中回答了多次,因此我只希望他们回答的每个主题都最新。

我知道如何从暴力角度执行此操作(涉及执行两个或多个单独的查询),但是我不确定在查询参数中是否存在执行此操作的能力。如果有人能对此提供一些见识或经验,我将不胜感激。让我知道您是否还有其他问题,或者是否有其他遗漏。

最佳答案

我可能会漏掉这一点,但是假设您的_id是单调的(对mongos的ObjectId而言是正确的)

db.replies.find({"topicId" : yourTopicId, "creatorId" : yourCreatorId}).
           sort({"_id" : -1}).limit(1);


这将找到特定作者对特定主题的最新回复。如果_id类型不是单调的,则说明您不走运,您可能必须调查主题中的messageIds列表。

10-04 10:51