Sviluppo un'app con struttura ad albero (file di cartelle), su cui dovrei eseguire ricerche full-text con MongoDB. Ho fatto una ricerca sulle migliori pratiche di struttura ad albero e ho trovato questo grande articolo, ma ho ancora non posso decidere quale struttura DB si adatta alle mie esigenze.
Ho in mente i seguenti requisiti:
- Dovrei essere in grado di eseguire ricerche full-text su singole cartelle, nonché tutto da utenti specifici
- Le cartelle / i file devono essere condivisibili, quindi devo essere in grado di eseguire ricerche full-text su tutti gli elementi accessibili da un utente specifico
Ho pensato alle seguenti strutture.
Struttura 1
Fields of Users collection
1. _id - objectid
2. name - string
Fields of Folders collection
1. _id - objectid
2. name - string
3. owner - objectid
4. sharedWith - array of objectIds
5. location - objectid of parent folder, null if in root
6. createDate - datetime
Fields of File collection
1. _id - objectid
2. name - string
3. owner - objectid
4. sharedWith - array of objectIds
5. data - string
6. location - objectId of folder
7. createDate - datetime
Quindi ecco le mie domande:
- Devo utilizzare le strutture ad albero del modello con Referenze principali o Riferimenti figlio?
- Devo usare 1 collezione per entrambi i file e le cartelle (con campo tipo) o dovrei separarli.
- Vale la pena avere solo la raccolta di cartelle e nidificare i documenti al suo interno.
Queste sono state le mie domande più importanti, ho pensato che apprezzerei molto qualsiasi consiglio su come migliorare la struttura.