首页 > 解决方案 > 给定 id 的 MongoDB 计数

问题描述

我有一个关于从 MongoDB 查询的问题。

我有一个在 MongoDB 中创建的聊天模块。

当从前端查询消息时,它会查询以便首先检索最新消息

目前,我的查询看起来像这样


  async findChatHistory(query: ChatHistroyDto): Promise<Chat[]> {
    return await this.chatModel
      .find({
        $or: [
          { fromUserId: query.fromUserId, toUser: query.toUserId },
          { fromUserId: query.toUserId, toUser: query.fromUserId },
        ],
      }, null, {limit: query.limit})
      .sort({ timeStamp: 'asc' })
  }

这很好用,但我想添加第二个参数以添加为偏移量/跳过。

问题是,在用户再次访问此服务方法之前,可以保留多条消息,所以理想情况下它应该是{lastMessageId: '123', limit: 10}. 由于我们检索消息的顺序,我们需要从lastMessageId. 所以客户端可以提供最后收到的消息的 id,MongoDB 将从该 id 开始查询。

示例客户端请求 lastMessageId:null,限制:3

msg1, msg2, msg3

客户端请求:lastmessageId:'msg3',限制:2

msg4, msg5

标签: node.jsmongodbexpressmongoosenestjs

解决方案


推荐阅读