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

在MongoDB中存储(复杂的)MongoDB查询,mongodb,mongodb-php,Mongodb,Mongodb Php,我有一个MongoDB文档集合,每个文档代表一条鱼。 然后,我的应用程序的用户可以通过在fish集合上创建查询来定义fish的类型。此查询可能非常复杂,如使用等 例如,用户可以定义 “高度异常的鲨鱼状鱼” 由以下机构退回的任何鱼类: {'length':{$gte : 45}, 'name' : {$in : ['Klaus', 'Alistair', 'Steve']}} 但是新的鱼经常被发现,我需要根据用户创建的查询为它们分配类型。也就是说,我将来需要多次使用此查询。因此,我的想法是收集以

我有一个MongoDB文档集合,每个文档代表一条鱼。 然后,我的应用程序的用户可以通过在fish集合上创建查询来定义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()

如果用户将查询构建为一个输入字符串,当然可以存储该字符串。您希望他们以后能够对其进行编辑。但是你已经做了评估,不是吗


否则,序列化查询文档并将其存储。

用户以表单形式构建查询;他们不知道幕后发生了什么。我根据他们的表单输入构建查询,所以不,我目前没有执行eval()。对于
eval
,您必须使用
数组(
)存储,它看起来和序列化值一样难看,所以使用后者。谢谢!我不知道serialize(),它正是我想要的。