Couchdb 高级查询-部分匹配
我试图找出在Cloudant/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
{
"_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。我正试图找出一种方法来获取“最接近匹配的数据库条目”。我将更新我的原始问题以澄清这一点。谢谢你的回复!