如何在mongoose中构build多对多的关系?
在我的应用程序中,用户有事件和组,事件可以(但不需要)属于组。 对于非关系型数据库,我还是一个新手,所以我想知道最佳实践来优化构build它。
var user = new mongoose.Schema({ name: { type: String }, events: [event], groups: [group] }); var group = new mongoose.Schema({ name: { type: String } });
这是我困惑的地方。
var event = new mongoose.Schema({ name: { type: String } groups: ???? });
我只是保持一个数组引用ID的ID?
如果我这样做,我将如何按组查找事件?
如果一个组被删除,我将不得不迭代每个事件来删除引用?
在MongoDB中,你有两个select。 embedded(subdocument)Vs链接(另一个集合)
embeddedVs链接每种方法都有优点和缺点。
embedded:将其嵌套在文档中。
例如,你的文件可能看起来像
{ name : 'name', events: [a,b,c], groups: [1,2,3] }
- 你会得到primefaces性,因为只涉及一个集合。
- 但是,值可能会重复
链接
在这里你可以链接一种外键。 参考文档
一个集合中的文档将引用另一个集合中的文档。 缺点是你失去primefaces操作。 但是,您可以消除重复。
如果要更新组和更新事件,并且它们位于不同的集合中,则必须自己处理primefaces更新。 Mongodb不会为你保证。