【发布时间】:2020-04-01 21:35:02
【问题描述】:
我正在使用 2 个 MongoDB 集合,Recipe 和 Menu。单个Menu 是Recipe 的组合。有关详细信息,请参阅下面的代码段
@Document
public class Recipe {
private String id;
private String name;
private String description;
// getter and setter
}
@Document
public class Menu {
private String id;
private String name;
private List<RecipeItem> recipeItem;
// getter and setter
}
public class RecipeItem {
private String id;
private String name;
private String description;
// getter and setter
}
RecipeItem 只是 Recipe 对象的副本,该对象在 Menu 集合中引用
保存Menu 集合后,您可以将配方添加到菜单,因此Recipe 对象列表也将以RecipeItem 的名义保存在Menu 集合中。当Recipe中的任何一个更新时,Menu中对应的RecipeItem也需要更新。否则,与更新后的当前Recipe 相比,菜单中的配方会过时。所以我必须迭代 Menu 集合,其中包含由 Id 更新的 Recipe 并且需要更新 Menu 集合中的配方信息。
因此更新Menu 函数将在单次执行中启动多个事务,因此我们也需要回滚机制。所以我不是很喜欢这种方法。
我是MongoDB新手,想验证Menu和Recipe的当前数据库设计是正确还是错误?如果是,那么最佳的做法是什么?我知道可以在集合之间使用数据库引用,但是会对性能产生影响。
【问题讨论】:
标签: mongodb nosql spring-data-mongodb