reactjs – Aggregation de Mongodb acerca de chat avanzado (Eliminar conversaciones)

les comento necesito ayuda con una consulta en MongoDB en la cual necesito traer datos de los chats,

Tengo una coleccion de:
Usuarios
Rooms
Mensajes

Sucede que en esta aggregation traigo el ultimo mensaje de cada chat (en una interfaz de chats para continuar con conversaciones)

Aparte traigo informacion a cerca del usuario de su respectivo chat y estan ordenados por fecha “ASC”

Lo que sucede es que dentro de la coleccion de rooms hay un atributo llamado “deleted_by” el cual es un arreglo en el cual se hace un “push” cada que un usuario de esa conversacion elimina la conversacion y tiene:
_id (id del usuario)
deleted_date (fecha en que se elimino la conversacion)

Lo que necesito es hacer que en el aggregation, me traiga el ulitimo mensaje o no, dependiendo de:
Si el usuario elimino la conversacion alguna vez y cual es el ultimo mensaje que su fecha “createdAt” sea mayor a la fecha de eliminacion de la conversacion “deleted_date”
Lo ideal seria que no pueda traer el chat si no hay mensajes despues de la fecha de eliminacion

Algo a recalcar es que esta fecha de eliminacion se actualiza para el usuario cada vez que vuelve a eliminar la conversacion

Si esta no es la forma correcta de hacerlo me gustaria que alguien me guiara de como debo manejar el tema de eliminar una conversacion (Pero que solo se elimine para el usuario que lo hizo, no para el otro) y aparte se inicie otra vez la conversacion y el otro usuario siga teniendo todos los mensajes, pero el que la elimino solo tenga la conversacion desde que la inicio nuevamente

data_chats = rooms_db.aggregate((
    {
      '$match': {
        'usuarios': ObjectId(usuario('_id')),
      }
    },
    {
      '$lookup': {
        'from': 'mensajes',
        'localField':'mensajes',
        'foreignField': '_id',
        'as': 'mensaje'
      }
    },
    {
      '$lookup': {
        'from': 'usuarios',
        'localField':'usuarios',
        'foreignField': '_id',
        'as': 'usuario'
      }
    },
    {"$unwind":"$usuario"},
    {"$unwind": "$usuario._id"},
    {"$match": {"usuario._id": {"$nin": (ObjectId(usuario('_id')))}}},
    {
      '$project': {
        'mensaje': {
          '$cond': (
            {'$eq': ( "$deleted_by._id", ObjectId(usuario('_id')))},
            #{'$slice': ('$mensaje', -1)},
            {'$filter': {
               'input': "$deleted_by",
               'as': "deleted_convers",
               'cond': { '$gte': ( "$$deleted_convers.delete_date", '$mensaje.createdAt') }
              }
            },
            {'$filter': {
               'input': "$deleted_by",
               'as': "deleted_convers",
               'cond': { '$gte': ( "$$deleted_convers.delete_date", '$mensaje.createdAt') }
              }
            },
          )
        },#{'$slice': ('$mensaje', -1)},
        'usuarios': {
          'id': '$usuario._id',
          'nombre_usuario': '$usuario.nombre_usuario',
          'foto_url': '$usuario.foto_url'
        },
        'deleted_by': {
          '$filter': {
               'input': "$deleted_by",
               'as': "deleted_convers",
               'cond': { '$eq': ( "$$deleted_convers._id", ObjectId(usuario('_id'))) }
          }
        }
      }
    },
    {
      '$sort': {'mensaje.createdAt': -1}
    },
  ))