我有一个MongoDB文档集合,每个文档代表一个 fish 。 然后,我的应用程序的用户可以通过创建鱼类集合的查询来定义类型的鱼。此查询可能非常复杂,使用Conditional Operators等。
例如,用户可以定义 '高度异常的鲨鱼状鱼' 成为任何返回的鱼:
{'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()?
答案 0 :(得分:1)
如果用户将查询构建为输入字符串,请确保存储该字符串。您希望他们以后能够编辑它。但是你已经eval
了,不是吗?
否则序列化查询文档并存储它。