2013-02-07 2 views
5

Se possibile, mi piacerebbe eseguire una ricerca & rimuovere la query su colonne non indicizzate in "background", senza disturbare altri compiti o esaurire la memoria a scapito di altri.mongodb background task

Per l'indicizzazione, c'è un flag di sfondo. Lo stesso può essere aggiunto per trovare/rimuovere attività?

Grazie per una punta

+0

Non per quanto ne so e anche cosa intendi con la rimozione di colonne non indicizzate? Significa che non stai rimuovendo l'intera riga ma utilizzando invece un operatore in memoria per rimuovere le colonne? Anche le colonne non indicizzate dovrebbero essere rimosse come qwuick come quelle indicizzate che forniscono la ricerca per la rimozione utilizza un indice. – Sammaye

+0

Sto andando a trovare da un campo non indicizzato, ad es. .find ({i_am_not_indexed: "target"}) e rimuove completamente i documenti corrispondenti. questo richiede alcuni minuti. questo era OK, perché non è un compito urgente, ma sta rallentando gli altri compiti di mongo. è per questo che cerco qualcosa di simile allo sfondo: vero .. – ledy

+0

Ah, ora vedo, scusa, non ne ho idea. Ho pensato di utilizzare le repliche come metodo per fare priorità, ma non funzionerebbe a causa dell'implementazione della replica in MongoDB – Sammaye

risposta

2

Questo non è qualcosa che è possibile utilizzare "background: true" per. Forse il modo migliore per gestirlo è scrivere uno script che faccia ciò in background. Questo script dovrebbe eseguire l'operazione in piccoli batch con un po 'di ritardo. In pseudo codice si dovrebbe fare:

  • trovare 10 documenti è necessario aggiornare
  • aggiornamento quei 10 documenti
  • sonno
  • goto primo passo.

Si dovrà sperimentare con quale valore per il sonno funziona. È necessario rendersi conto che tutti i documenti che si stanno aggiornando devono essere tirati in memoria, quindi avrà almeno un certo impatto.

2

No, non c'è uno sfondo: vera bandiera per questa operazione. La rimozione produrrà quando si verificano errori di pagina e consentirà l'esecuzione di altre operazioni. Se è necessario limitare questo, è possibile rimuovere in lotti più piccoli o utilizzare un modello di ricerca/rimozione che ridurrà l'impatto su altre operazioni.

+0

lo stesso accade con .find (senza rimuovere). anche nessuna soluzione per questo compito a bassa priorità? – ledy