MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Lo spostamento di documenti tra le raccolte è un buon modo per rappresentare i cambiamenti di stato in MongoDB?

Sì, questo è di progettazione. MongoDB non fornisce esplicitamente join o transazioni. Rimuovi + Salva è una forma di transazione.

Hai davvero due opzioni a bassa complessità qui, entrambe implicano findAndModify .

Opzione n. 1:un'unica raccolta

In base alla tua descrizione, stai fondamentalmente costruendo una coda con alcune funzionalità extra. Se sfrutti una singola raccolta, utilizzi findAndModify per aggiornare lo stato di ogni articolo durante l'elaborazione.

Sfortunatamente, ciò significa che perderai questo:...che la raccolta "in entrata" può essere mantenuta molto piccola e veloce in questo modo .

Opzione n. 2:due raccolte

L'altra opzione è fondamentalmente un commit in due fasi, che sfrutta findAndModify .

Dai un'occhiata ai documenti per questo qui .

Dopo che un articolo è stato elaborato in A hai impostato un campo per contrassegnarlo per l'eliminazione. Quindi copi quell'elemento su B . Una volta copiato in B puoi quindi rimuovere l'elemento da A .