【问题标题】:How to get all embedded mongoid documents for a user如何为用户获取所有嵌入的 mongoid 文档
【发布时间】:2015-05-06 19:32:50
【问题描述】:
在 Mongoid (Rails) 中,我有 3 个模型:File、Version 和 User。 Version 是嵌入在 File 中的,并且 File 和 Version 都属于 User(尽管文件中的所有版本不一定相同)。
现在我想检索属于特定用户或嵌入在属于相同的用户。
我试过了:
- 几乎任何东西
Version.<something>,总是 0 结果(可能是因为 Version 不是顶级文档?)
-
File.any_of(user: user, 'versions.user': user): NoMethodError: #<0x00000007cd9400>0x00000007cd9400>
-
标签:
ruby-on-rails
mongoid
mongoid4
【解决方案1】:
当您说“嵌入式”时,这意味着嵌入式模型(版本)不再是一个单独的实体,并且没有单独的 collection。它包含在Document(文件模型对象)中。
没有集合意味着 ->
Pt 1 将返回 nil
Pt2 这也意味着用户-版本关系不存在
在 Pt3 中,“versions.user_id”查询被简单地忽略了。
Re:“如何以数据库友好的方式实现这一点?”
仅当嵌入文档从不打算独立使用或在没有父文档的上下文的情况下毫无意义时才使用。
所以访问和嵌入文档的唯一方法是through父文档。
由于文件和用户都在使用此处的版本,因此您应该考虑为它创建一个单独的集合。 (又名标准化数据模型)
您可以阅读更多关于 mongodb 数据建模的内容here