Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用CouchDB创建复杂过滤器_Angularjs_Ionic Framework_Couchdb_Pouchdb_Nosql - Fatal编程技术网

Angularjs 使用CouchDB创建复杂过滤器

Angularjs 使用CouchDB创建复杂过滤器,angularjs,ionic-framework,couchdb,pouchdb,nosql,Angularjs,Ionic Framework,Couchdb,Pouchdb,Nosql,我有一个ionic应用程序,它将数据存储在本地数据库中 我的数据库存储的文档如下示例所示: { Timestamp: "2016-11-17T09:35:06", Category: "CAT_1", Place: "House", ... Responsible: "Foo Bar", ... }, { Timestamp: "2016-11-07T18:45:11", CategoryCode: "CAT_2", Pla

我有一个ionic应用程序,它将数据存储在本地数据库中

我的数据库存储的文档如下示例所示:

{
    Timestamp: "2016-11-17T09:35:06",
    Category: "CAT_1",
    Place: "House",
    ...
    Responsible: "Foo Bar",
    ...
},
{
    Timestamp: "2016-11-07T18:45:11",
    CategoryCode: "CAT_2",
    Place: "Apartment",
    ...
    Responsible: "Bar Foo",
    ...
}
我的ionic应用程序需要一个过滤屏幕,用户可以在其中选择这4个字段中的任何/所有字段,并将其应用于过滤

因此,我的应用程序用户只能选择
时间戳
来搜索特定日期的眼波。他可以选择按单个
类别过滤所有内容,依此类推

他可以创建这4个元素的任意组合,如:

[Timestamp,Category]
[Timestamp,Place]
[Category,Place]
[Timestamp,Responsible]
...
我总是要按时间戳倒序,但这不是问题所在

问题是我找不到任何映射函数可以提供这种灵活性

我知道,如果用户必须填写所有过滤器,我可以轻松使用此映射功能:

map: 
function (doc) {
    emit([Timestamp,Category,Place,Responsible], doc.Name);
}
有了这个,我知道我可以质疑这种可能性:

[Timestamp,{}]
[Timestamp,Category,{}]
[Timestamp,Category,Place,{}]
[Timestamp,Category,Place,Responsible]
但是我不能只按
[Place,Responsible]
进行筛选,因为CouchDB/PockDB不允许我将通配符放在左边,比如
[{},{},Place,Responsible]
,只放在右边,就像我之前展示的那样

我知道我可以为每个可能性创建一个映射,但今天我们有四个过滤器,明天可以是十个

你们中的一些人能告诉我我能做些什么来报道它吗

我知道我的SQL背景应该让我走错了方向,但我想用NoSQL和CouchDB/DB创建一个复杂的过滤器并不难

我不可能是第一个这么做的人


谢谢你的帮助

我认为在Couchdb中没有这样的过滤器,因为在其他NoSQL数据库中没有这样的方法。即使对于SQL数据库,如果在
[Timestamp,Category,Place,Responsible]
上有索引,也不能将其用于搜索
[{},{},Place,Responsible]

您可以考虑使用CouChDB的全职搜索,您可以指定任何字段的组合来搜索任意顺序:

这里需要注意的是,搜索只检索前200条记录,之后您需要发出额外的请求对结果进行分页,同时保持数据库不被修改