Хранение (сложного) запроса MongoDB в MongoDB - PullRequest
2 голосов
/ 10 августа 2011

У меня есть коллекция документов MongoDB, каждый документ представляет собой fish . Пользователи моего приложения могут затем определить тип рыбы , создав запрос на коллекцию рыб. Этот запрос может быть очень сложным с использованием условных операторов и т. Д.

Например, пользователь может определить 'очень ненормальная акулоподобная рыба' быть любой рыбой, возвращенной:

{'length':{$gte : 45}, 'name' : {$in : ['Klaus', 'Alistair', 'Steve']}}

Но новые рыбы часто обнаруживаются, и мне нужно назначать им типы на основе запросов, созданных пользователями. То есть мне нужно будет многократно использовать этот запрос в будущем. Поэтому я думаю иметь коллекцию с такими документами:

{'typename' : 'highly abnormal shark-like fish', 
'query' : '{'length':{$gte : 45}, 'name' : {$in : ['Klaus', 'Alistair', 'Steve']}}'}

Мой вопрос: должен ли я хранить запрос в виде строки? Это лучший способ?

Имейте в виду, что при обнаружении новой рыбы мне придется применить запрос с использованием драйвера PHP. Должен ли я хранить PHP-массив-версию запроса в виде строки, а затем использовать eval ()?

1 Ответ

1 голос
/ 10 августа 2011

Если пользователи создают запросы как строку ввода, обязательно сохраните ее. Вы хотите, чтобы они могли редактировать его позже. Но тогда вы уже делаете eval, не так ли?

В противном случае сериализуйте документ запроса и сохраните его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...