Couchdb - 日期范围+多个查询参数
Couchdb - date range + multiple query parameters
我希望能够在日期之间查询 couchdb,我知道这可以用 startkey
和 endkey
来完成(它工作正常),但是是否可以进行查询像这样:
SELECT *
FROM TABLENAME
WHERE
DateTime >= '2011-04-12T00:00:00.000' AND
DateTime <= '2012-05-25T03:53:04.000'
AND
Status = 'Completed'
AND
Job_category = 'Installation'
Generally-speaking,随着字段数量的增加,在多个字段上建立索引变得越来越复杂。
我的主要问题是:Status
和Job_category
也需要动态查询吗?如果不是,你的看法很简单:
function (doc) {
if (doc.Status === 'Completed' && doc.Job_category === 'Installation') {
emit(doc.DateTime); // this line may change depending on how you break up and emit the datetimes
}
}
视图 相当 便宜,(取决于您的数据库的大小)所以不要害怕建立多个涵盖不同情况的视图。我希望像 Status
这样的东西有可用选项的预定义列表,与 Job_category
相反,它看起来 可能 与用户输入更相关。
如果您需要这些字段是动态的,您也可以将它们添加到索引中:
function (doc) {
emit([ doc.Status, doc.Job_category, doc.DateTime ]);
}
然后你可以使用一个数组作为你的start_key
。例如:
start_key=["Completed", "Installation", ...]
tl;dr:使用 "static" 视图,其中您有给定字段的预定值列表。虽然可以查询 "dynamic" 具有多个字段的视图,但复杂性会增加得非常快。
我希望能够在日期之间查询 couchdb,我知道这可以用 startkey
和 endkey
来完成(它工作正常),但是是否可以进行查询像这样:
SELECT *
FROM TABLENAME
WHERE
DateTime >= '2011-04-12T00:00:00.000' AND
DateTime <= '2012-05-25T03:53:04.000'
AND
Status = 'Completed'
AND
Job_category = 'Installation'
Generally-speaking,随着字段数量的增加,在多个字段上建立索引变得越来越复杂。
我的主要问题是:Status
和Job_category
也需要动态查询吗?如果不是,你的看法很简单:
function (doc) {
if (doc.Status === 'Completed' && doc.Job_category === 'Installation') {
emit(doc.DateTime); // this line may change depending on how you break up and emit the datetimes
}
}
视图 相当 便宜,(取决于您的数据库的大小)所以不要害怕建立多个涵盖不同情况的视图。我希望像 Status
这样的东西有可用选项的预定义列表,与 Job_category
相反,它看起来 可能 与用户输入更相关。
如果您需要这些字段是动态的,您也可以将它们添加到索引中:
function (doc) {
emit([ doc.Status, doc.Job_category, doc.DateTime ]);
}
然后你可以使用一个数组作为你的start_key
。例如:
start_key=["Completed", "Installation", ...]
tl;dr:使用 "static" 视图,其中您有给定字段的预定值列表。虽然可以查询 "dynamic" 具有多个字段的视图,但复杂性会增加得非常快。