在对象中查找属性并返回完整路径

时间:2018-10-08 18:51:12

标签: node.js

让我从搜索开始,但找不到我要寻找的特定答案。我有文档,它们存储在芒果或Couchbase之类的NSQL数据库中,并且这些文档有一个对象,该对象又可以容纳另一个对象或对象数组。文档中的每个对象都有一个唯一的GUID,我希望能够找到该GUID并返回完整路径。如果我将guid的搜索路径固定在哪里,那么我已经成功地做到了,但是我希望有一种方法可以不受预定义的路径和子级别限制。

这是一个样本

{
"type": "lead",
"id": "4416e4cc-89df-4537-b86f-a417614ebe10",
"contact": [
{
  "type": "contact",
  "id": "4416e4cc-89df-4537-b86f-a417614ebe11",
  "dob": "07/12/1978",
  "email": [
    {
      "default": "yes",
      "email_address": "email1@email.com",
      "type": "home",
      "id": "4416e4cc-89df-4537-b86f-a417614ebe12"
    },
    {
      "default": "no",
      "email_address": "email2@email.com",
      "type": "work",
      "id": "4416e4cc-89df-4537-b86f-a417614ebe13",
      "note": [
        {
          "id": "4416e4cc-89df-4537-b86f-a417614ebe73",
          "type": "note",
          "3rdLevel": [
            {
              "id": "4416e4cc-89df-4537-b86f-a417614ebe77",
              "type": "thirdLevel"
            }
          ]
        }
      ]
    }
  ],
  "first_name": "Susi",
  "gender": "f",
  "last_name": "Smith",
  "middle_name": "M",
  "suffix": "I",
  "title": ""
},
{
  "type": "contact",
  "id": "4416e4cc-89df-4537-b86f-a417614ebe10",
  "dob": "07/12/1978",
  "email": [
    {
      "default": "yes",
      "email_address": "email1@email.com",
      "type": "home",
      "id": "4416e4cc-89df-4537-b86f-a417614ebe22"
    },
    {
      "default": "no",
      "email_address": "email2@email.com",
      "type": "work",
      "id": "4416e4cc-89df-4537-b86f-a417614ebe23"
    }
  ],
  "first_name": "Susi",
  "gender": "f",
  "last_name": "Smith",
  "middle_name": "M",
  "suffix": "I",
  "title": ""
},
{
  "type": "contact",
  "id": "4416e4cc-89df-4537-b86f-a417614ebe09",
  "dob": "07/12/1978",
  "email": [
    {
      "default": "yes",
      "email_address": "email1@email.com",
      "type": "home",
      "id": "4416e4cc-89df-4537-b86f-a417614ebe32"
    },
    {
      "default": "no",
      "email_address": "email2@email.com",
      "type": "work",
      "id": "4416e4cc-89df-4537-b86f-a417614ebe33"
    }
  ],
  "first_name": "Susi",
  "gender": "f",
  "last_name": "Smith",
  "middle_name": "M",
  "suffix": "I",
  "title": ""
},
{
  "type": "contact",
  "id": "4416e4cc-89df-4537-b86f-a417614ebe08",
  "dob": "07/12/1978",
  "email": [
    {
      "default": "yes",
      "email_address": "email1@email.com",
      "type": "home",
      "id": "4416e4cc-89df-4537-b86f-a417614ebe42"
    },
    {
      "default": "no",
      "email_address": "email2@email.com",
      "type": "work",
      "id": "4416e4cc-89df-4537-b86f-a417614ebe43"
    }
  ],
  "first_name": "Susi",
  "gender": "f",
  "last_name": "Smith",
  "middle_name": "M",
  "suffix": "I",
  "title": ""
}
]
}

1 个答案:

答案 0 :(得分:0)

Couchbase通过“关键字”(https://docs.couchbase.com/server/5.5/n1ql/n1ql-language-reference/collectionops.html#collection-op-within)解决嵌套搜索。您尚未指定正在使用的数据库,所以建议您搜索类似的运算符。