У меня возникли проблемы с самой эффективной моделью данных для хранения логических критериев. Критерии могут быть следующими:Дизайн модели данных для выражения логических критериев
- поле = значение
- Поле = Значение
- Field1 = Значение1 И Field2 = значение2
- Field1 = Значение1 ИЛИ Field2 = значение2
Но также могут быть вложены так:
- (Field1 = Value1 OR Field2 = Value2) A ND Поле3 = Значение3
Вложение может быть бесконечно глубоким.
Я начал с моделью, как это:
Criterion
Field Name
Comparison Operator
Comparison Value
Это позволяет мне выразить простые критерии, такие как «поле = значение».
Как мне связать цепочку Criterion
вместе с помощью инструкций AND/OR и как лучше всего обращаться с гнездованием?
FYI (может добавить больше контекста) - это для проекта Rails/Mongoid. У меня есть Document
, который embeds_many :criteria
. Мне нужно иметь возможность называть Document.criteria_string
и перебирать документ по всем критериям и сопоставлять его с одним оператором, учитывающим вложение, цепочку и позиционирование критериев.
Спасибо!
удивительную. Я использовал Mongoids 'recursively_embeds_many' и смог выполнить его аналогично тому, что у вас было выше. Благодаря! – user1032752