2012-06-13 15 views
5

primo luogo si prega di notare che questo argomento è diverso da quanto segue dueMongoDB: come unire due collezioni/database in uno?

MongoDB: Combine data from multiple collections into one..how?

Merging two collections in MongoDB

MongoDB and "joins"

spiegherò come segue:

ho due database denominati: DB_A e DB_B nel mio mongodb.

Ogni database ha una collezione con lo stesso nome chiamata store.

Entrambe le collezioni sono un sacco un sacco di documenti che hanno esattamente la stessa struttura {chiave: "key1", valore: "value1"}, ecc

In realtà, mi avrebbe dovuto solo creare DB_A e inserire tutti i documenti in DB_A. Ma più tardi, quando ho fatto il mio secondo ciclo di inserimento, ho fatto un errore digitando il nome sbagliato come nome del database.

Così ora, ogni database ha una dimensione di 32 GB, desidero unire due database.

Un problema/vincolo è che lo spazio libero disponibile ora è solo 15 GB, quindi non posso solo DB_B a DB_B a DB_A.

Mi chiedo se posso fare move? o qual è il modo più semplice/migliore/veloce per unire i due semplici database? Preferisco il modo più efficiente in quanto il semplice reinserimento di 32 GB in DB_A richiederà un po 'di tempo.

+2

Prendere il primo documento da DB_B. Inseriscilo in DB_A se non è già lì. Cancellalo da DB_B. Ripeti fino al termine. –

+0

@SergioTulentsev Se ho appena cancellato DB_B e reinserisco di nuovo tutto (di DB_B) in DB_A usando il mio codice, sarà più lento di quello che hai suggerito? – Jack

+0

Se tutti i dati sono in DB_B, è possibile rilasciare DB_A e rinominare DB_B. –

risposta

4

Penso che il modo più semplice (e forse il solo) è scrivere uno script che unisca i due documenti del database dopo il documento.

  1. Ottenere il primo documento da DB_B.
  2. Inserirlo in DB_A se necessario.
  3. Cancellarlo da DB_B.
  4. Ripeti fino al termine.

Invece di eliminare i documenti dal db di origine (DB_B), si consiglia di leggere solo i documenti in lotti. Questo dovrebbe essere più performante, ma leggermente più difficile da codificare (specialmente se non hai mai fatto una cosa del genere).

+0

come passare da un database all'altro db_a a db_b? Sto cercando di scrivere uno script in python. Hai bisogno di una guida. – rkatkam

+1

@rkatkam: basta creare due connessioni separate. –

+0

Ok. Ancora un qtn, cosa succede se ho due database separati con lo stesso nome. Come dovrei procedere? Attualmente li sto avendo su macchine diverse. Voglio unirli. Qualche idea? – rkatkam