相交的Mongoid“in”-Queries

时间:2013-05-13 12:27:35

标签: ruby-on-rails mongodb mongoid

根据明确合并的mongoid documentation(“可查询#in - 默认为交叉”)我希望以下查询:

Contact.in(id: ['a', 'b']).in(id: ['b', 'c'])

导致类似这样的事情:

=> #<Mongoid::Criteria
  selector: {"_id"=>{"$in"=>["b"]}}
  options:  {}
  class:    Contact
  embedded: false>

但是我得到了所有可以想象的案例的覆盖:

[1] pry(main)> Contact.in(id: ['a', 'b']).in(id: ['b', 'c'])
=> #<Mongoid::Criteria
  selector: {"_id"=>{"$in"=>["b", "c"]}}
  options:  {}
  class:    Contact
  embedded: false>

[2] pry(main)> Contact.in(id: ['a', 'b']).intersect.in(id: ['b', 'c'])
=> #<Mongoid::Criteria
  selector: {"_id"=>{"$in"=>["b", "c"]}}
  options:  {}
  class:    Contact
  embedded: false>

[3] pry(main)> Contact.in(id: ['a', 'b']).union.in(id: ['b', 'c'])
=> #<Mongoid::Criteria
  selector: {"_id"=>{"$in"=>["b", "c"]}}
  options:  {}
  class:    Contact
  embedded: false>

我做错了吗?

1 个答案:

答案 0 :(得分:0)

您面临的问题是由Mongoid gem引起的。升级到最新版本的Mongoid gem将解决这个问题。

有关该错误的更多信息可以在这里找到

https://github.com/mongoid/origin/pull/83