knp*_*wrs 5 grails grails-orm relationship mongodb
我很好奇Grails的MongoDB插件如何处理关系.为了测试这个,我用两个域类创建了一个非常简单的应用程序:
Author有两个字段:String firstName和String lastName
Book有两个字段:String title和Author author
在设置了MongoDB和Grails之后,我制作了一些Authors和Books,并使用MongoDB交互式shell进行了查看.我发现关系的处理方式与在关系数据库中处理的方式相同:对其他对象的id字段的引用.
所以现在问题:
编辑:我也注意到grails没有在我的作者的'id'属性上正确排序.这与使用MongoDB有关吗?在shell中我可以看到Grails生成的所有文档的_id属性都是数据类型NumberLong.
我意识到 MongoDB 不应该是关系型的,但有些事情我不知道如何在不复制数据的情况下绕过关系
那就别出汗了。MongoDB 不是反关系的,它是面向文档的。
在本例中,书籍和作者是两个顶级对象。嵌套它们中的任何一个都是不合理的,它们本身就是核心实体。
在每本书只有一位作者 (N:1) 的情况下,书中包含对作者的“参考”是完全合理的。当然你必须做两个查询。但这与执行连接查询有很大不同吗?连接查询仍然需要进行两次索引查找和两次数据查找。所以你在这里并没有真正付出任何代价。
如果每本书支持多个作者 (M:N),那么您可以根据自己的需求有多种选择。
我不喜欢将 MongoDB 视为“非关系型”,我认为将 MongoDB 视为查询优化的更清晰。
我还注意到 grails 没有对我的作者的 'id' 属性进行正确排序......
我会直接与 Grails 作者联系。听起来他们可能存储“字符串”而不是实际的 ObjectId(或 MongoID)。虽然并不重要,但这可能是一个错误。
| 归档时间: |
|
| 查看次数: |
2753 次 |
| 最近记录: |