Ho una collezione di messaggi:C'è un modo per aggiornare atomicamente due raccolte in MongoDB?
{
messageid: ObjectId
userid: ObjectId
message: string
isread: true|false
}
e una collezione di messaggio che conta per utente:
{
userid: ObjectId
total: int
unread: int
}
Quando si elimina un messaggio da "messaggi" di raccolta, ho anche bisogno di diminuire il "totale "in" conta "insieme, e condizionatamente (se" messages.isread "== false) diminuisce anche il campo" non letto ".
Per questo ho bisogno di recuperare prima il messaggio, controllare il suo campo "da leggere" e quindi aggiornare i conteggi. Esiste la possibilità che il messaggio venga contrassegnato come letto tra quelle azioni, quindi diminuirò i conteggi "non letti" in modo errato.
C'è un modo per modificare in modo condizionale qualcosa in una raccolta basata sui risultati di un'altra raccolta in un solo scatto?
Era anche la mia domanda :) Il mio sito sarà relativamente carico elevato, e non voglio ricalcolare le statistiche ogni volta che ho bisogno di loro, quindi sto usando quella raccolta contatore. – Andrey
Dovresti profilarlo se non lo hai già fatto. – Maxence
Anche senza profiling, posso dire che cursor.count() sarà sempre molto più lento del semplice recupero di un numero, specialmente su set con centinaia di milioni di record. – Andrey