2012-06-13 16 views
5

Öncelikle bu soruyu lütfen unutmayın aşağıdaki ikiMongoDB: İki koleksiyon/veritabanı bir arada nasıl birleştirilir?</p> <p>Ben adında iki veritabanları: <code>DB_A</code> ve

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

Merging two collections in MongoDB

MongoDB and "joins"

şöyle açıklayacağım

farklıdır Benim mongodbumda DB_B.

Her veritabanı, store olarak adlandırılan aynı ada sahip bir koleksiyona sahiptir. {: "Anahtar1", değeri: anahtar "deger1"}

Her iki koleksiyon tam olarak aynı yapıya sahip dokümanlar sürü sürü var vs. Aslında

, ben sadece DB_A oluşturmak ve tüm doküman eklemek gerekiyordu DB_A içine. Fakat daha sonra ikinci takma adımı gerçekleştirdiğimde, yanlış adın veritabanının adı olarak yazarak bir hata yaptım.

Şimdi her veritabanında 32 GB'lık bir boyut var, iki veritabanını birleştirmek istiyorum.

Tek bir sorun/kısıtlama, şu anda boş alanın yalnızca 15GB olması, bu yüzden DB_B - DB_A arasındaki tüm konuları bulamıyorum.

move yapıp yapamayacağımı merak ediyorum? ya da iki basit veritabanını birleştirmek için en basit/en iyi/hızlı yolu nedir? En verimli yolu tercih ettim ve 32GB'yi DB_A'a yeniden yerleştirmek oldukça zaman alacaktır.

+2

İlk belgeyi DB_B'den al. Henüz orada değilse, DB_A'ya yerleştirin. DB_B'den silin. Tamamlanana kadar tekrarlayın. –

+0

@SergioTulentsev DB_B'yi silip kodumu kullanarak DB_A'daki her şeyi yeni DB_A'ya yeniden yerleştirirsem, bu şekilde önerdiğinizden daha yavaş olur mu? – Jack

+0

Tüm verileriniz DB_B'de ise, DB_A'yı bırakıp sadece DB_B'yi yeniden adlandırabilirsiniz. –

cevap

4

En kolay (ve belki de tek) yol, belgeden sonra iki veritabanını birleştiren bir komut dosyası yazmaktır.

  1. İlk belgeyi DB_B'den alın.
  2. Gerekirse, DB_A'ya yerleştirin.
  3. Bunu DB_B adresinden silin.
  4. Tamamlanana kadar tekrarlayın.

Belgeleri db (DB_B) kaynağından silmek yerine, belgeleri toplu halde okumak isteyebilirsiniz. Bu daha performanslı olmalı, ancak kodu biraz daha zorlaştırmalısınız (özellikle böyle bir şey yapmadıysanız).

+0

db_a ve db_b farklı veritabanları arasında geçiş nasıl? Python'da bir senaryo yazmaya çalışıyorum. Biraz rehberliğe ihtiyacım var. – rkatkam

+1

@rkatkam: Sadece iki ayrı bağlantı oluştur. –

+0

Tamam. Bir tane daha qtn, ne de aynı ada sahip iki ayrı veritabanım varsa. Nasıl ilerlemeliyim? Şu anda onları farklı makinelerde yaşıyorum. Onları birleştirmek istiyorum. Herhangi bir fikir? – rkatkam

İlgili konular