微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。