高级查询 - 部分匹配



我正在尝试找出在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",
}
}

查询示例

现在假设用户执行以下查询:

"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 的数据库条目?

编辑我在最初的问题中并不完全清楚。用户完全不知道数据库中的内容,因此,哪些值是相关的。用户只需具有值af。我正在尝试找出一种方法来获取"最接近匹配的数据库条目"。

根据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 }
}
}

最新更新