mongoid query - 调用size方法会产生错误

时间:2012-05-02 08:21:48

标签: ruby-on-rails-3 mongodb mongoid mongodb-query

执行此查询时:

User.where(:comments.size => 10)

我收到以下错误:

undefined method `size' for :comments:Symbol

但是根据这里的文件:

  

http://mongoid.org/docs/querying/criteria.html

这应该是可能的。那么,为什么会出错呢?

注意:'comments'是来自User的单独集合,具有'has_and_belongs_to_many'关系。

我正在使用mongoid 3.0.0和bson_ext 1.6.1

提前致谢!

2 个答案:

答案 0 :(得分:2)

如果用户嵌入了评论,但是当用户与评论相关联时,则无效。由于$ size运算符,它适用于嵌入(尽管这不是一个超级高效的查询来执行。最好将大小缓存在单独的字段中。)

答案 1 :(得分:0)

使用with_size,而不是size,使用Mongoid 3.它将转换为MongoDB $size运算符。

  

Queryable#with_size:添加$size选项。匹配数组字段具有所提供值的确切大小的文档。这被命名为with_size,不会与Ruby的Enumerable#sizeSymbol#size冲突。“(来自Origin Selection documentation