mongodb docs の具体化されたパスツリー構造のガイドでは、単純なクエリをサポートするためにデータを構造化する方法の簡単な例を示しています。
db.categories.insert( { _id: "Books", path: null } )
db.categories.insert( { _id: "Programming", path: ",Books," } )
db.categories.insert( { _id: "Databases", path: ",Books,Programming," } )
db.categories.insert( { _id: "Languages", path: ",Books,Programming," } )
db.categories.insert( { _id: "MongoDB", path: ",Books,Programming,Databases," } )
db.categories.insert( { _id: "dbm", path: ",Books,Programming,Databases," } )
_id
これは、アイテムごとに一意である限り問題なく機能します。私たちの場合、コース構造を設計しています。これは、/course-a/lesson-1/introduction
. データ設計は重複をサポートする必要があります (たとえば、複数のコースに「イントロダクション」というレッスンを含めることができます)。
- コースA
- はじめに(レッスン)
- パート 1 (レッスン)
- パート 2 (レッスン)
- 背景(レッスン)
- ... (レッスン)
- はじめに(レッスン)
- Bコース
- はじめに(レッスン)
- なぜこれが機能するのか (レッスン)
- ... (レッスン)
私たちの現在の解決策は、マテリアライズド パス デザインを使用してレッスンを作成することです。これは、重複するレッスン ID では機能しないことに気付いたときです。しかし、すべてを捨てる前に、アドバイスをお願いしたいと思います。
具体化されたパスを使用して問題をサポートするためにこれを設計する方法はありますか?