【问题标题】:How to get filtered result by using Hash Index in ArangoDB?如何在 ArangoDB 中使用哈希索引获得过滤结果?
【发布时间】:2016-02-14 15:11:53
【问题描述】:

我的数据:

{
  "rootElement": {
    "names": {
      "name": [
        "Haseb",
        "Anil",
        "Ajinkya",
        {
          "city": "mumbai",
          "state": "maharashtra",
          "job": {
            "second": "bosch",
            "first": "infosys"
          }
        }
      ]
    },
    "places": {
      "place": {
        "origin": "INDIA",
        "current": "GERMANY"
      }
    }
  }
}

我使用 API 在job 字段上创建了一个哈希索引:
http://localhost:8529/_db/_api/index?collection=Metadata

{
  "type": "hash",
  "fields": [
    "rootElement.names.name[*].jobs"
  ]
}

我使用 API 进行搜索查询:
http://localhost:8529/_db/_api/simple/by-example

{
  "collection": "Metadata",
  "example": {
    "rootElement.names.name[*].jobs ": "bosch"
  }
}

理想情况下,只返回包含job : bosch 的文档作为结果。但对我来说,它提供了数组name[*] 中的所有文档。我在哪里做错了?

【问题讨论】:

  • 第一个提示:如果可以的话,你应该避免简单的查询。
  • 但它是搜索的直接查询
  • 答案是否满足您的需求?如果没有,缺少什么?如果,你能把它标记为接受吗?

标签: arangodb arangojs arangodb-php


【解决方案1】:

简单查询不支持数组星号运算符。

您需要为此使用 AQL:

FOR elem IN Metadata FILTER elem.rootElement.names.name[*].jobs = "bosch" RETURN elem

您也可以执行AQL via the REST interface - 但是您应该尝试让司机为您完成繁重的工作。

【讨论】:

  • Arango 是否以任何方式处理嵌套数组以进行全文索引和搜索?
  • 'translation' exampl 展示了全文索引的功能。目前不支持更深的嵌套。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2014-11-10
相关资源
最近更新 更多