Mongodb & Materialized путь: список подкаталогов - PullRequest
0 голосов
/ 01 ноября 2018

Я ищу способ иметь папки и файлы в моем приложении, которое использует Mongodb.

Я думаю, что материализованные пути - лучший способ продолжить (потому что переименование или перемещение файлов / папок состоит только в изменении пути).

Моя проблема в том, что я не могу перечислить подкаталоги.

Например, со следующей структурой:

{ _id: "idFile1", path: ",DirA,File1," }
{ _id: "idFile2", path: ",DirA,File2," }
{ _id: "idFile3", path: ",DirA,DirB,File3," }
{ _id: "idFile4", path: ",DirA,DirB,DirC,File4," }
{ _id: "idFile5", path: ",DirA,DirB,DirD,File5," }

Какой лучший способ:

  • Элементы списка в DirA (Файл1, Файл2, DirB);
  • Элементы списка в DirB (File3, DirC, DirD);
  • ...

Согласно этому сообщению Схема Mongoose для иерархических данных, таких как папка> подпапка> файл и документация, мне нужно создать пути для подкаталогов, например:

{ _id: "idDirB", path: ",DirA,DirB," }

И тогда я смогу составить список содержимого DirA, используя

Model.find( { path: /,DirA,[^,],$/ } )

Это не то, что я хочу, потому что в нем пропущен смысл использования материализованных путей (необходимо выполнять несколько запросов при смене имен, перемещении файлов или каталогов).

Так есть ли способ решить эту проблему?


Редактировать:

На самом деле хранение пути к каталогу является хорошим решением.

Но я только что понял, что у mongodb нет оператора для замены в строке (для перемещения / переименования внутри пути) ...

Полагаю, мне нужно выполнить запрос на поиск, а затем обновить поле пути для каждой записи: '(

...