按键搜索Mongoid哈希字段

lee*_*guy 2 search ruby-on-rails mongodb mongoid

我想这将是简单,当我实现它,但是经过一番搜索,谷歌搜索和文档的扫描,我似乎无法找到答案.

我有一个字段是一个散列,其中键是id,值是其他id的数组.例如:

{"52ab84929938c7f966d4f116"=>["52ab84919938c7f966d4ee7d"],
 "52ab84929938c7f966d4f117"=>["52ab84919938c7f966d4ee7d"],
 "52ab84929938c7f966d4f0cc"=>["52ab84919938c7f966d4ee7d", "52ab84929938c7f966d4f13d"],
 "52ab84929938c7f966d4f147"=>["52ab84919938c7f966d4ee7d"]}
Run Code Online (Sandbox Code Playgroud)

这可能更适合图形类型的数据库,但我不熟悉这项技术,并已经围绕Mongoid构建了我的应用程序的其余部分.对于另一个复杂的问题,这是我能提出的最简单的解决方案.

所以我的问题是如何搜索记录,例如id:52ab84929938c7f966d4f0cc作为哈希字段中的键?

我尝试像这样做数组样式并返回零结果:

Course.all_in(:skills_available => sk.id)
Run Code Online (Sandbox Code Playgroud)

而且我知道这不起作用,但如果它做到了会很好:

Course.where(:skills_available.key => sk.id)
Run Code Online (Sandbox Code Playgroud)

Les*_*nis 5

Course.where(:'skills_available.52ab84929938c7f966d4f0cc'.ne => nil)
Run Code Online (Sandbox Code Playgroud)
  • 唯一的限制是它会跳过: {'52ab84929938c7f966d4f0cc' => nil}