gpt4 book ai didi

ruby-on-rails - Mongoid 或/any_of 意外行为

转载 作者:可可西里 更新时间:2023-11-01 09:20:32 26 4
gpt4 key购买 nike

我遇到了 mongoid any_of 的问题。我正在尝试查找一个字段 > 0 或另一个字段 > 0 的对象。我的查询是:

Model.any_of(best_friend_method.gt => 0, method.gt => 0).desc(best_friend_method, method)

它被“翻译”成:

#<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>

据我了解,这就是我想要的。但它只返回 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

感谢您的宝贵时间!

最佳答案

这是因为您只传递了一个参数而不是两个参数。所以这就像你没有 $or 用法。

尝试:

Model.any_of({best_friend_method.gt => 0}, {method.gt => 0}).desc(best_friend_method, method)

在这种情况下,条件变为:

#<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>

有时必须使用 {} 来分隔不同的哈希值。

关于ruby-on-rails - Mongoid 或/any_of 意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9819433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com