【问题标题】:mongoid query - calling the size method produces an errormongoid 查询 - 调用 size 方法会产生错误
【发布时间】:2012-05-02 08:21:48
【问题描述】:
当我执行这个查询时:
User.where(:comments.size => 10)
我收到以下错误:
undefined method `size' for :comments:Symbol
但是根据这里的文档:
http://mongoid.org/docs/querying/criteria.html
这应该是可能的。那么,为什么会出错呢?
注意:“cmets”是与 User 具有“has_and_belongs_to_many”关系的单独集合。
我正在使用 mongoid 3.0.0 和 bson_ext 1.6.1
提前致谢!
【问题讨论】:
标签:
ruby-on-rails-3
mongodb
mongoid
mongodb-query
【解决方案1】:
如果用户嵌入评论,这将起作用,但当您将用户与评论联系起来时,这将起作用。由于 $size 运算符,它适用于嵌入(尽管这不是一个超级高效的查询。最好将大小缓存在单独的字段中)。
【解决方案2】:
在 Mongoid 3 中使用 with_size,而不是 size。它将转换为 MongoDB $size 运算符。
Queryable#with_size:添加$size 选择。匹配数组字段具有所提供值的确切大小的文档。这被命名为with_size 不与Ruby 的Enumerable#size 或Symbol#size 冲突。”(来自Origin Selection documentation)