是否可以创建适用于不同类型文档的通用查询?例如,我有“案例”和“工厂”,它们有不同的字段集。例如:
{
id: 'case_o1',
name: 'Case numero uno',
amount: 40
}
{
id: 'factory_002',
location: 'Venezuela',
workers: 200,
operating: true
}
是否可以创建一个通用查询,我将在其中传递实体的类型(案例或工厂)和其他参数,并根据这些参数过滤结果?我当然可以使用 javascript 视图,但它不允许我按多个字段进行过滤。假设我想获取位于委内瑞拉的所有工厂,工人人数在 20 到 55 之间。
我从这个开始,但后来我卡住了:
select * from `mybucket` as entity
where position(meta(entity).id, $entity_type) == 0
如何传递多个谓词并让查询识别它们?
我当然可以列出这样的字段:
where position(meta(entity).id, $entity_type) == 0
and entity.location == 'Venezuela'
and entity.workers > $workers_min
and entity.workers < $workers_max
但是之后
- 我将不得不为每个实体创建一个单独的查询
- 即使那样它也不能解决我的问题 - 我不知道如何忽略谓词,如果下次没有通过 $workers_min 和 $workers_max 怎么办,这是否意味着我必须为每个谓词(列)创建一个查询?
- 出于安全原因,我无法生成自由格式的查询并将它们传递给 Couchbase 服务器,所有查询都已存储在数据库中,我们的 api 只是从文档中提取它们并执行它们
- 我认为可以为未定义的参数(例如
WHERE $location IS MISSING OR entity.location == $location
或类似的东西)创建一个“短路”的查询
是否有可能创建一个能够根据任意参数有效过滤和排序数据集的查询?还是没有办法?