我正在使用Codeigniter和MongoDB开发一个Web应用程序。 我需要创建一个使用以下标准搜索数据库的函数。
它需要足够灵活,以便用户只能按标签或状态进行搜索,并忽略其他标准。
现在我正在使用if else结构,其中包含反映所选内容的不同查询 标准。例如下面的代码。这是非常糟糕的方式因为我需要创建 查询匹配每个可能的组合。
if ($args['status']) {
$this->mongo_db->select ($select)->
where('user_name', $args['username']) ->
where ('status', $args['status']) ->
where_in_all ('file_tags', $tags) ->
limit ($limit) ->
offset ($offset) ->
get ('files');
} else {
$this->mongo_db->select ($select)->
where('user_name', $args['username']) ->
where_in_all ('file_tags', $tags) ->
limit ($limit) ->
offset ($offset) ->
get ('files');
}
在MongoDB中没有更好的搜索方式吗?
答案 0 :(得分:4)
为什么不想根据用户输出创建查询,稍后再使用它来从mongoDb获取数据。下面是伪代码
if (status) {
query.put(status, status)
}
if (tags) {
query.put(tags, tags)
}
... etc
mongo_db->select ($query) - > limit -> offet -> get