2015-10-14 15 views
6

Tôi có ứng dụng Rails 4 nhiều miền, trong đó yêu cầu http xác định chức năng tôi hiển thị cho một khách truy cập nhất định.Làm thế nào để chuyển đổi cơ sở dữ liệu MongoDB khi đang sử dụng db.collection.insert()?

Mỗi miền trong ứng dụng của tôi phải được phân phát bởi cơ sở dữ liệu MongoDB của riêng nó. Ví dụ. domain1.com được phục vụ bởi db_for_domain_1 vv

tôi có thể đọc trong MongoDB docs on runtime persistence rằng

Mongoid.override_database("db_for_#{request.domain}") 

cho phép tôi để chuyển đổi cơ sở dữ liệu một cách nhanh chóng.

Nhưng làm cách nào để duy trì sự kiên trì khi tôi bỏ qua Mongoid và sử dụng phương thức mongo Shell db.collection.insert()? Tôi vẫn sẽ làm điều đó từ bên trong ứng dụng của tôi mặc dù.

Câu trả lời có thể nằm trong số MongoDB docs on collection access, nhưng tôi không hiểu. Vậy làm thế nào để tôi chuyển đổi cơ sở dữ liệu trước/trong khi hoạt động này ?:

MyModel.collection.insert({field_1: "Value 1", field_2: "Value 2"}) 
+0

Bạn có sử dụng cùng một kiểu máy trên cơ sở dữ liệu không? – tegon

+0

Vâng, tôi làm! Tôi chúng tôi cùng một mô hình chính xác. – ChristofferJoergensen

+0

Trên "... làm thế nào để giữ cho sự bền bỉ ...": Một ODM không thể biết về các hoạt động được thực hiện bên ngoài khuôn khổ đó. Khi bạn chèn tài liệu thông qua lệnh mongo shell, hãy kích hoạt một tài liệu đọc trên tài liệu đó thông qua Mongoid để tải nó vào lớp persistence. –

Trả lời

4

Nếu tôi hiểu câu hỏi của bạn một cách chính xác: bạn có một ứng dụng kết nối đến mongodbs khác nhau trên các máy chủ khác nhau, nhưng muốn sử dụng vỏ Mongo để kết nối với cơ sở dữ liệu bên ngoài ứng dụng của bạn? Nếu đúng, bạn sẽ kết nối với cơ sở dữ liệu mong muốn thông qua vỏ với

mongo db_for_domain_1:<port>/<dbName> 

và sau đó

db.<collectionName>.insert({doc}) 

thấy mongo --help cho tên người dùng và mật khẩu tùy chọn.

+0

Cảm ơn @SteveTarver. Tôi rất vui vì có thể chuyển đổi cơ sở dữ liệu. Tôi không hoàn toàn chắc chắn mặc dù làm thế nào để giải thích dòng này: 'mongo db_for_domain_1: /'. Phương thức Ruby là 'mongo' và 'db_for_domain_1: /' một đối số giá trị, khóa? Trong trường hợp đó, tôi hiểu phần giá trị của đối số (ví dụ: có thể là cổng '27017'), nhưng tôi không hiểu phần chính của đối số. – ChristofferJoergensen

+0

Xin lỗi, tôi không muốn kết nối từ bên trong ứng dụng của mình. Điều duy nhất tôi muốn phá vỡ là Mongoid (vì tôi đang sử dụng phương thức mongo Shell). Vì vậy, tôi cần một cái gì đó hoạt động, ví dụ: từ một bộ điều khiển. – ChristofferJoergensen

+0

Xin lỗi, không có đường ray hoặc trải nghiệm Mongoid, không thể cung cấp trợ giúp ở đó. May mắn thay, nghe như một thử thách thú vị. –

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