Reputation: 671
I have a MongoDB collection of documents, each document representing a fish. Users of my application can then define a type of fish, by creating a query on the fish collection. This query can be very complex, using Conditional Operators, etc.
For example, a user could define the 'highly abnormal shark-like fish' to be any fish returned by:
{'length':{$gte : 45}, 'name' : {$in : ['Klaus', 'Alistair', 'Steve']}}
But new fish are frequently being discovered, and I need to assign types to them based on the queries created by the users. That is, I will need to use this query again many times in the future. Therefore, my thought is to have a collection with documents like this:
{'typename' : 'highly abnormal shark-like fish',
'query' : '{'length':{$gte : 45}, 'name' : {$in : ['Klaus', 'Alistair', 'Steve']}}'}
My question is: should I store the query as a string? Is that the best way?
Please keep in mind that as new fish are discovered, I will have to apply the query using the PHP driver. Should I store the PHP-array-version of the query as a string, then use eval()?
Upvotes: 2
Views: 887
Reputation: 96276
If users build the queries as an input string, sure, store that. You want them to be able to edit it later. But then you already do eval
, don't you?
Otherwise serialize the query document and store that.
Upvotes: 1