Запрос по иерархической ссылке
Я ищу лучший способ для моделирования этих данных: у меня есть коллекция законов. Каждая статья может иметь 0 абзаца (это означает, что абзац не пронумерован явно) или более (максимум 5).
var lawSchema = new Schema({
name:{type:String,required:true},
chapter:{type:String},
paragraph:[{type:Numer}]
});
var documentSchema = = new Schema({
name:{type:String,required:true},
article_ref:[{item:{type: ObjectId, ref: 'article'},comment:String}]
});
Эта текущая схема неверна, поскольку документ может ссылаться на статью ИЛИ только на конкретный абзац. Я должен иметь возможность запросить коллекцию документов двумя способами: по закону или по закону.
- в первом случае я хочу получить весь документ, который ссылается на этот закон X (или его параграф).
- во втором случае я хочу только те документы, которые относятся к этому пункту закона (игнорируя другие пункты)
Первое и слишком простое решение - "выровнять" эти иерархические данные в коллекции "Право" и получить разные документы для каждого закона и абзаца:
var lawSchema = new Schema({
name:{type:String,required:true},
});
коллекция должна выглядеть так:
[
{_id:000,name:"article1"},
{_id:001,name:"article1 - paragraph 1"},
{_id:002,name:"article1 - paragraph 2"},
{_id:003,name:"article2"}
...
]
Мне это не нравится, потому что для выполнения запроса по статье требуется какая-то большая дополнительная работа на бизнес-уровне (как я уже сказал, мне нужны документы, которые ссылаются на "article1", а также "article1 - пункт 1")
РЕДАКТИРОВАТЬ: я нашел этот вопрос Мангуста Схема для иерархических данных, таких как папка> подпапка> файл Но я не ясно, если с помощью путей, я легко получить ссылки, как я сказал (ссылка на главу и все ее абзацы или один абзац)