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 中通过不同的过滤器创建搜索(可以跳过一些过滤器,用户选择他想要搜索的过滤器)?如何组合不同的参数?
如果没有选择参数进行搜索(如第二种情况),我如何跳过参数?
谢谢你。
解决方案
在 CouchDB 2.x 中,您可以使用 /db/_find 端点和 Mango 表达式来查询数据库。
请检查表达式语法以检查它是否可以满足您的需求。
推荐阅读
- c - C - 返回指向二维数组的指针
- c# - 使用 PDFViewer 让我得到 NullReferenceException
- php - 无法在 Codeigniter4 中触发 ChromeLogger 处理程序
- javascript - 使用 React Bootstrap 渲染模态
- php - 为什么命令 php artisan make:auth 不起作用?
- elasticsearch - 嵌套数组的 Elasticsearch 条件查询
- python - Django 3 'NoReverseMatch 在 /post/1/
- c - 使用 MPI_Win_create() 和 MPI_Get() 函数时的问题
- r - 具有多个条件的 dplyr 过滤器 data.frame
- c - 如何将 strcmp 与 void 指针一起使用