Place.rb has_many :reviews
has_many :reviews
Review.rb belongs_to :place 关联查询: Place.where('reviews.state' => 'published')
belongs_to :place
Place.where('reviews.state' => 'published')
结果为空,但使用 Embed 就可以,难道是 Mongoid 3 变了?!还是我那里搞错了?
Mongodb 没有关联查询
Place.where( :_id.in => Review.where(state: 'published').only(:place_id).distinct(:place_id) )
@mimosa 跟嵌套子查询的效果差不多了
#1 楼 @Rei 无关联关系??那请教一下:已经获得一个 place 实例,就不能直接 place.reviews.XX 么,整天说没有定义方法,有什么好建议,做类似关联查询
#4 楼 @sforce100 可以,不过这个是关联方法,不是关联查询。也就是它会分成两次查询进行。
这个查询针对的是 places collection,places 里面没有 reviews 数据,所以不能查。
二楼的方法可以,会执行两次查询。如果因为性能考虑需要一次查询获得,那么就用 embed。
#4 楼 @sforce100 其实有点不清楚你的需求,顶楼要查的是 Place,4 楼要查的是 reviews。
#6 楼 @Rei 谢谢,我之前都是用 embed 的,网上看到一个事例,在介绍 has_many 时用到了关联查询,还以为新版 mongoid 支持呢~~