如何在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不会为你保证。