Ruby on rails mongoid';与';期权行为随>;6

Ruby on rails mongoid';与';期权行为随>;6,ruby-on-rails,ruby,mongodb,mongoid,mongoid6,Ruby On Rails,Ruby,Mongodb,Mongoid,Mongoid6,让我从我的用例开始。我有两个不同的mongoid数据库实例,基于相似的模型,每个区域托管。 根据用户输入,代码将从我的rails应用程序中的各个mongo实例中获取结果。我不确定这样做的最佳方式是什么,但我使用Model.with方法并在mongoid.yml中配置了两个客户端 对于mongoid我只使用了mongoid 6,就在最近,但这可能会有所帮助。不过,这与多个客户案例无关 嗯,#first实际上是说,根据标准{name:'john'}给我第一个出现的地方 当您调用#where时,您只是

让我从我的用例开始。我有两个不同的mongoid数据库实例,基于相似的模型,每个区域托管。 根据用户输入,代码将从我的rails应用程序中的各个mongo实例中获取结果。我不确定这样做的最佳方式是什么,但我使用Model.with方法并在mongoid.yml中配置了两个客户端


对于mongoid我只使用了mongoid 6,就在最近,但这可能会有所帮助。不过,这与多个客户案例无关

嗯,
#first
实际上是说,根据标准
{name:'john'}
给我第一个出现的地方

当您调用
#where
时,您只是声明了条件参数,但实际的查询在您请求实际数据之前不会执行,这难道不是吗

我不是100%肯定,但是

:001 > Book.where(name: "my book")
 => #<Mongoid::Criteria
  selector: {"name"=>"my book"}
  options:  {}
  class:    Book
  embedded: false>

 :002 > Book.where(name: "my book").first
 => #<Book _id: 5954ae90ASDF10fe7739cbe, name: "my book", code: "ASDF-1234-qwer-3456">
 :003 >
:001>书。其中(名称:“我的书”)
=>#“我的书”}
选项:{}
班级:书本
嵌入:false>
:002>书。在哪里(名称:“我的书”)。首先
=> #
:003 >
现在,如果您希望收集数据而不是标准本身,您可能希望在该对象上调用一个方法,如
#to#u a
#to_json
#first
#last
,使用
#each
,或者甚至使用
[0]/code>之类的运算符。这将为您带来与前面声明的条件对应的数据

这就是我的想法,因为当我从rails应用程序在控制器的方法中抛出一个
#where
,结果呈现为JSON时,对
#as#JSON
的调用是隐式的


也许可以尝试调用a
#来_a
,获取要返回的完整对象数组。

谢谢您的回复。我理解简单的用例。问题是在我上面的第一个mongoid 6“with”查询中,结果实际上是
mongoid::Criteria
,但它是空的。您建议使用
#来_a
有效,但它会击中数据库,而我只想在遍历
Mongoid::Criteria
时使用该数据库。
results = SomeModel.with(client: "region1") do |mymodel|
    mymodel.where(name: 'John')
end
results = SomeModel.with(client: "region1") do |mymodel|
    mymodel.where(name: 'John').first
end
:001 > Book.where(name: "my book")
 => #<Mongoid::Criteria
  selector: {"name"=>"my book"}
  options:  {}
  class:    Book
  embedded: false>

 :002 > Book.where(name: "my book").first
 => #<Book _id: 5954ae90ASDF10fe7739cbe, name: "my book", code: "ASDF-1234-qwer-3456">
 :003 >