2011-01-14 3 views
16

모든 명령이 mongodb의 동일한 데이터베이스에서 작동하는 것을 보았다. 다음과 같이하고 싶습니다.mongo 데이터베이스의 레코드를 다른 데이터베이스에 어떻게 삽입합니까?

db.mySourceCollection.find(). forEach (function (x) {db.theDestinationCollection.save (x)}); mySourceCollectionliveDatabasetheDestinationCollection

testDatabase에있다. 제가 위에서 보여준 것처럼

> var documents = db.mySourceCollection.find() 
> use testDatabase 
switched to db testDatabase 
> documents.forEach(function(x){ db.theDestinationCollection.insert(x) }) 

db

답변

15

사용 use :-) 그러나 당신이 use 명령을 사용하여 실시간으로 데이터베이스를 전환 할 수 있습니다, 현재 연결된 데이터베이스를 참조하는 데 사용됩니다.

셸에서 help 명령을 확인하십시오.이 명령과 훨씬 더 많이 언급합니다!

+0

고마워요! 나는 사용법을 알고 있었지만 변수를 국가에 유지할 생각은하지 못했습니다. IMHO 유체 사용을 위해 db에 use() 메소드가 필요합니다. db.use ('sourceDb'). collectionA.do (db.use ('destDb'). – b7kich

+0

데이터베이스에 UTF-8 문자가있을 수 있습니다. 클라이언트가 원시 클라이언트 인 경우 예를 들어 Ubuntu의 경우'$ mongo --version' =>'MongoDB shell version : 1.6.3') UTF-8이 없기 때문에 복사가 실패합니다. 새 클라이언트를 다시 컴파일하기 위해 서버에 더러움이 있으면 항상 별도의 컴퓨터로 다시 컴파일하고 원격 서버에 연결된 네트워크를 통해이 작업을 수행 할 수 있습니다. 그러나 서버에서 클라이언트로 데이터가 흐르고 다시 돌아올 수 있습니다. 어쨌든 원격 UTF-8 클라이언트로 작동합니다! –

13
use dbname이 스크립트 모드에서 작동하지 않습니다

(즉, 자바 스크립트와 쉘 스크립팅 경우) 당신은 'DB'변수, 예를 들어 재 할당하는 대신 db.getSiblingDB() 방법을 사용한다, 그래서 여기

db = db.getSiblingDB("otherdb") 

더 많은 정보를 : http://www.mongodb.org/display/DOCS/Scripting+the+shell

관련 문제