在MongoDB中存储(复杂)MongoDB查询

时间:2011-08-09 21:15:51

标签: mongodb mongodb-php

我有一个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()?

1 个答案:

答案 0 :(得分:1)

如果用户将查询构建为输入字符串,请确保存储该字符串。您希望他们以后能够编辑它。但是你已经eval了,不是吗?

否则序列化查询文档并存储它。