【问题标题】:Search by filters using views in CouchDB使用 CouchDB 中的视图按过滤器搜索
【发布时间】:2018-05-07 13:51:10
【问题描述】:

我有一个 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 中是否有更有效的方法来通过不同的过滤器创建搜索(可以跳过某些过滤器,用户选择他想要搜索的过滤器)?如何组合不同的参数?

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

谢谢。

【问题讨论】:

  • 你用的是哪个couchdb版本?
  • @JuanjoRodriguez 2.1.0

标签: view couchdb


【解决方案1】:

在 CouchDB 2.x 中,您可以使用 /db/_find 端点和 Mango 表达式来查询数据库。

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

【讨论】:

  • 好的,我查一下,稍后回复。谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多