kso*_*sol 3 ruby-on-rails mongodb mongoid
我遇到了mongoid的问题any_of.我正在尝试找到一个字段> 0或另一个> 0的对象.我的查询是:
Model.any_of(best_friend_method.gt => 0, method.gt => 0).desc(best_friend_method, method)
Run Code Online (Sandbox Code Playgroud)
它被"翻译"在:
#<Mongoid::Criteria
selector: {"$or"=>[{:best_friends_lc_sum=>{"$gt"=>0}, :lc_sum=>{"$gt"=>0}}]},
options: {:sort=>[[:best_friends_lc_sum, :desc], [:lc_sum, :desc]]},
class: FbAlbum,
embedded: false>
Run Code Online (Sandbox Code Playgroud)
据我了解,这就是我想要的.但它只给我6个结果.Model.where(:best_friends_lc_sum.gt => 0).count也给我6个结果,但Model.where(:lc_sum.gt => 0).count返回我~~ 850个对象.
我希望我的查询返回这两个的联合:是一个mongoid/mongodb错误,还是我做错了什么?
仅供参考:mongoid 2.4.5,mongodb 2.0.2,rails 3.1.3
谢谢你的时间!
这是因为你只通过一个args而不是2个args.所以就像你没有$or用.
试试:
Model.any_of({best_friend_method.gt => 0}, {method.gt => 0}).desc(best_friend_method, method)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,标准成为:
#<Mongoid::Criteria
selector: {"$or"=>[{:best_friends_lc_sum=>{"$gt"=>0}}, {:lc_sum=>{"$gt"=>0}}]},
options: {:sort=>[[:best_friends_lc_sum, :desc], [:lc_sum, :desc]]},
class: FbAlbum,
embedded: false>
Run Code Online (Sandbox Code Playgroud)
有时必须使用{}以分隔不同的散列.
| 归档时间: |
|
| 查看次数: |
4426 次 |
| 最近记录: |