使用CouchDB中的视图按过滤器搜索

时间:2018-05-07 13:51:11

标签: view couchdb

我有一个CouchDB数据库,我存储这样的模型:

"_id": "id",
"_rev": "rev",
"field_1": "test",
"filed_2": 45,
"filed_3": 15,
"object_1": {
  "field_1_1": 123,
  "filed_1_2": 125
  }
}

我想通过不同范围(过滤器)中的特定参数搜索模型。

例如,在一种情况下,我需要找到所有模型

  • field_2从10到50
  • field_3从10到20
  • object_1.field_1_1从100到150,object_1.field_1_2从120到130

在另一种情况下,我需要找到field_2从10到50的所有模型。

目前我写了这样的观点:

function (doc) {
  emit([doc.filed_2, doc.field_3, doc.object_1.field_1_1, doc.object_1.filed_1_2], 1);
}

因此它产生了结果:

{"id":"id","key":[45,15,123, 125],"value":1}

我可以使用这个数组键来获取必要的模型,我可以使用" startkey"和" endkey"生成范围。

但是,在CouchDB中,是否有更有效的方法可以通过不同的过滤器创建搜索(可以跳过某些过滤器,用户选择他想要搜索的过滤器)?我如何组合不同的参数?

如果没有选择参数进行搜索(如第二种情况),如何跳过参数?

谢谢。

1 个答案:

答案 0 :(得分:0)

在CouchDB 2.x中,您可以将/ db / _find端点与Mango表达式一起使用,以便查询数据库。

请检查expression syntax,以检查它是否能满足您的需求。