Подключение к двум базам данных Mongoid
У меня есть две базы данных, которые я должен использовать в своем приложении. У меня есть следующее в моем mongoid.yml:
development:
# Configure available database sessions. (required)
sessions:
# Defines the default session. (required)
default:
# Defines the name of the default database that Mongoid can connect to.
# (required).
database: db_development
username: myusername
password: mypassword
# Provides the hosts the default session can connect to. Must be an array
# of host:port pairs. (required)
hosts:
- myserverip:27017
databases:
secondary:
database: db2_development
username: myusername
password: mypassword
# Provides the hosts the default session can connect to. Must be an array
# of host:port pairs. (required)
hosts:
- myserverip:27018
В моем файле модели:
class MyModel
include Mongoid::Document
store_in database: "secondary"
field :name, type: String
field :age, type: Integer
end
У меня есть данные в MyModel. Когда я пытался сделать запрос, я получаю следующую ошибку:
Moped::Errors::QueryFailure (The operation: #<Moped::Protocol::Query
@length=96
@request_id=5
@response_to=0
@op_code=2004
@flags=[:slave_ok]
@full_collection_name="secondary.mymodel"
@skip=0
@limit=0
@selector={"name"=>"Tom"}
@fields=nil>
failed with error 10057: "unauthorized db:secondary ns:secondary.mymodel lock type:0 client:10.100.55.40"
Я пытался искать в Интернете, но не смог найти никакого решения. Любая помощь будет оценена. Заранее спасибо.
1 ответ
Хм хорошо вы можете сделать это, кажется, вы испортили свой файл YAML
development:
sessions:
default:
database: db_development
username: my_username
password: my_password
hosts:
- myserverip:27017
options:
consistency: :eventual
writeable:
database: db2_development
username: myusername2
password mypassword2
hosts:
- myserverip2:27018
options:
consistency: strong
В вашей модели просто напишите это
store_in session: "writeable"
class MyModel
include Mongoid::Document
store_in session: "writeable"
field :name, type: String
field :age, type: Integer
end
К вашему сведению: Никогда не проверял с password
варианты, но я думаю, это будет работать
Надеюсь это поможет
Для временного доступа к базе данных (например, в сценарии) вы можете использовать драйверы MongoDB Ruby: Учебники - Документация - Документация низкого уровня
Для быстрого обзора:
Подключитесь к базе данных:
client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'my_db')
db = client.database
Запрос записей через синтаксис запроса mongoDB:
db['collection_name'].find('field_name' => 'field_value')