2011-01-14 42 views

Trả lời

15

Sử dụng use :-)

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

db được sử dụng để tham khảo các cơ sở dữ liệu hiện đang kết nối, tuy nhiên bạn có thể chuyển đổi cơ sở dữ liệu một cách nhanh chóng bằng cách sử dụng lệnh use, như tôi đã trình bày ở trên.

Kiểm tra lệnh help trong trình bao - nó đề cập đến lệnh này và hơn thế nữa!

+0

Cảm ơn! Tôi biết về việc sử dụng, nhưng tôi sẽ không nghĩ đến sự bền bỉ của nhà nước trong một biến. IMHO Tôi mong đợi phương thức use() trên db để sử dụng chất lỏng, ví dụ: db.use ('sourceDb'). collectionA.do (db.use ('destDb'). – b7kich

+0

Nó có thể xảy ra rằng cơ sở dữ liệu có các ký tự UTF-8. Khi điều này chạy qua máy khách, nếu máy khách là bản địa (ví dụ cho Ubuntu, '$ mongo --version' =>' phiên bản shell MongoDB: 1.6.3') nó có thể thiếu UTF-8 và sau đó bản sao sẽ thất bại. Nếu đây là trường hợp và bạn không muốn đặt dơ bẩn vào máy chủ của bạn để biên dịch lại một máy khách mới, bạn luôn có thể biên dịch lại thành một máy riêng biệt và thực hiện công việc này qua mạng kết nối với một máy chủ từ xa. Tuy nhiên, dữ liệu sẽ truyền từ máy chủ đến máy khách và ngược lại, vì vậy nó có thể Dù sao với một khách hàng UTF-8 từ xa, hoạt động !!! –

13

use dbname không hoạt động trong chế độ kịch bản (tức là khi kịch bản shell với javascript), vì vậy bạn nên sử dụng phương pháp db.getSiblingDB() thay vì gán biến 'db', ví dụ:

db = db.getSiblingDB("otherdb") 

Thông tin thêm ở đây : http://www.mongodb.org/display/DOCS/Scripting+the+shell

Các vấn đề liên quan