2

当我执行此查询时:

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

提前致谢!

4

2 回答 2

2

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

于 2012-05-02T15:15:43.973 回答
0

在 Mongoid 3 中使用with_size, not size。它将转换为 MongoDB$size运算符。

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

于 2012-07-28T01:08:16.253 回答