Coleções limitadas são coleções de tamanho fixo que removem automaticamente os documentos mais antigos (com base na ordem de inserção) substituindo-os assim que a coleção estiver cheia.
As coleções limitadas conceitualmente são um buffer circular em vez de uma fila.
Isso não parece uma boa opção para um caso de uso de informações de pedidos persistentes - não há "gancho" para reinserir documentos em uma coleção limitada quando eles são excluídos e, se sua coleção limitada for muito pequena, você poderá substituir documentos antes de serem processados.
Acho que você realmente deseja usar uma coleção normal (sem limite).
Excluir pedidos antigos com base no status
Se você deseja excluir pedidos com base em algum valor de estado, deve lidar com isso no código do aplicativo (por exemplo, quando um pedido passa do estado "Pendente" para "Processado", faça qualquer limpeza necessária).
Excluir pedidos antigos/expirados com base no tempo
Se você deseja que os pedidos antigos/expirados sejam excluídos automaticamente em um horário específico, uma boa abordagem seria usar uma coleção normal com um expiração do tempo de vida (TTL) no nível do documento , por exemplo:
db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
Você pode definir (ou estender) a expiração de cada documento de pedido com base no
expireAt
encontro. Observe que esta pode não ser uma opção adequada se você precisar verificar tanto o expireAt
valor e um campo de status (a expiração do TTL é baseada exclusivamente no índice de data fornecido).