couchdb 视图功能:在文档中的 json 数组中搜索

问题描述

我们正在使用 couchdb 文档并使用 ektorp (Java) 来查询数据库

我有一个具有以下结构的 couchdb 文档 -

{
  "type": "UserRecord","name": "Matt","age": "32","userData": [
    {
      "key": "city","value": "Bombay"
    },{
      "key": "country","value": "India"
    },{
      "key": "pin","value": "400002"
    }
  ]
}

我们有一个按城市名称搜索的新要求。例如:搜索所有以城市为内容的文档。

我们通过编写如下视图函数来实现:

function (doc) {
  if (doc.type == 'UserRecord' && doc.userData)
    emit(doc.userData[0].value,null);
}

这会给我所有的城市名称值,从中我们可以查询我们想要的特定城市名称。 我们可以通过在 for 循环中运行所有数组元素并检查其键为“city”的元素并获取相应值来改进这一点。

然而,这似乎是一种非常密集的搜索方式。太费时间了。有没有更好的方法来做到这一点?

我无法更改“userData”数组的结构,因为它已经使用了很长时间并且无法更改。我可以编写更有效的查询获取具有给定城市名称的文档吗? 例如:搜索居住在纽约的人的所有用户记录。

我想在“userData”字段之上添加新字段 - city 和我们希望能够搜索的任何其他参数。这将是一个更快的查找。 然而,我们试图避免对文档结构进行此类编辑。所以如果有更好的方法,请告诉我。

谢谢, 嗡

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)