Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Couchdb 高级查询-部分匹配_Couchdb_Cloudant - Fatal编程技术网

Couchdb 高级查询-部分匹配

Couchdb 高级查询-部分匹配,couchdb,cloudant,Couchdb,Cloudant,我试图找出在Cloudant/CouchDB数据库中查询非常可变数据的最佳方法。我解释它的唯一方法是展示一个例子: 数据库示例 { "_id": "1", "query-able_values": { "value-type-b": "some value", "value-type-c": "some other value", "value-type-d": "another va

我试图找出在Cloudant/CouchDB数据库中查询非常可变数据的最佳方法。我解释它的唯一方法是展示一个例子:

数据库示例

    {
        "_id": "1",
        "query-able_values": {
            "value-type-b": "some value",
            "value-type-c": "some other value",
            "value-type-d": "another value",
            "value-type-f": "yet another value",
        }
    }

    {
        "_id": "2",
        "query-able_values": {
            "value-type-a": "value",
            "value-type-c": "some other value",
            "value-type-d": "another value"
        }
    }

    {
        "_id": "3",
        "query-able_values": {
            "value-type-a": "some value",
            "value-type-e": "some other one",
        }
    }
查询示例

    {
        "_id": "1",
        "query-able_values": {
            "value-type-b": "some value",
            "value-type-c": "some other value",
            "value-type-d": "another value",
            "value-type-f": "yet another value",
        }
    }

    {
        "_id": "2",
        "query-able_values": {
            "value-type-a": "value",
            "value-type-c": "some other value",
            "value-type-d": "another value"
        }
    }

    {
        "_id": "3",
        "query-able_values": {
            "value-type-a": "some value",
            "value-type-e": "some other one",
        }
    }
现在假设用户执行以下查询:

    "selector": {
        "query-able_values.value-type-a": "value",
        "query-able_values.value-type-b": "a value not present in the database",
        "query-able_values.value-type-c": "some other value",
        "query-able_values.value-type-d": "another value",
        "query-able_values.value-type-e": "a value not present in the database",
        "query-able_values.value-type-f": "a value not present in the database"
    }
我需要更改什么,以便查询将命中id为2的数据库条目

编辑
我原来的问题不是很清楚。用户完全不知道数据库中有什么,因此也不知道哪些值是相关的。用户只需将值a通过f即可。我正在试图找到一种方法来获取“最接近匹配的数据库条目”。

根据
CouchDB
,可以这样写

"selector": {
    "query-able_values": {
        "value-type-a": "value",
        "value-type-b": { "$exists": false },
        "value-type-c": "some other value",
        "value-type-d": "another value",
        "value-type-e": { "$exists": false },
        "value-type-f": { "$exists": false }
    }
}
或使用显式相等运算符

"selector": {
    "query-able_values": {
        "value-type-a": { "$eq": "value"},
        "value-type-b": { "$exists": false },
        "value-type-c": { "$eq": "some other value"},
        "value-type-d": { "$eq": "another value"},
        "value-type-e": { "$exists": false },
        "value-type-f": { "$exists": false }
    }
}

我注意到现在我忘了提到用户的查询是完全不可知的。它不“知道”哪些值与哪些数据库条目无关。用户具有值a到f。我正试图找出一种方法来获取“最接近匹配的数据库条目”。我将更新我的原始问题以澄清这一点。谢谢你的回复!