MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mover documentos entre coleções é uma boa maneira de representar mudanças de estado no MongoDB?


Sim, isso é por design. O MongoDB explicitamente não fornece junções ou transações. Remover + Salvar é uma forma de transação.

Você realmente tem duas opções de baixa complexidade aqui, ambas envolvem findAndModify .

Opção nº 1:uma única coleção

Com base na sua descrição, você está basicamente construindo uma fila com alguns recursos extras. Se você aproveitar uma única coleção, use findAndModify para atualizar o status de cada item durante o processamento.

Infelizmente, isso significa que você perderá isso:...que a coleção "incoming" pode ser mantida muito pequena e rápida dessa maneira .

Opção nº 2:duas coleções

A outra opção é basicamente um commit de duas fases, aproveitando findAndModify .

Dê uma olhada nos documentos para este aqui .

Quando um item é processado em A você define um campo para sinalizá-lo para exclusão. Você então copia esse item para B . Uma vez copiado para B você pode remover o item de A .