Grails - 获取MongoDB中基于一对多列表的关系的索引

时间:2016-10-17 13:37:17

标签: mongodb grails mapping gorm

我有一个包含多个一对多关系的模型。其中一个是类PageList,其中包含多个HeaderEntries。每个HeaderEntry用于存储有关Pages中所有PageList共有的一列标题的信息。 由于页面的HeaderEntries具有在将来的操作中使用的特定顺序,因此HeaderEntries的此顺序很重要并且应该保持不变。

由于可以从HeaderEntries删除Header,因此我不想向每个idx添加属性HeaderEntry,并在所有HeaderEntries上更新List<HeaderEntry> header static hasMany = [header: HeaderEntry] 1}}&#39;手动&#39;,如果其中一个被删除或添加了新的。

因此我使用了以下代码

PageList

位于static belongsTo = [pagelist: PageList]

一侧
HeaderEntry

位于MySQL

一侧

我过去使用过header_idx,所有内容都运行正常,因为每个HeaderEntry添加了一个属性HeaderEntry,并在添加HeaderEntry时自动更新或删除。稍后加载header时,HeaderEntries可以作为正确排序HeaderEntry的列表进行访问,其中indexOf的位置与另一个对象一起保存通过使用列表header上的MongoDB轻松确定。

由于性能问题,我想将数据库更改为header_idx,但我无法重现所描述的行为。使用代码avove,不会生成任何属性static embedded = ['header'] ,因此列表会松散其顺序。如果我使用

HeaderEntries

我会在数据库中有很多重复的条目,因为从许多对象引用了相同的indexOf。或者这是以文档为导向的dbs的方式?此外,我无法使用HeaderEntry,因为由PageList以外的其他对象存储的HeaderEntry被解释为与header中的对应PageList <-> Header不同的对象}。

所描述的行为不仅适用于<关系,还适用于许多其他关系。

0 个答案:

没有答案