Couchbase对象的查询对象

时间:2017-08-04 07:29:30

标签: database couchbase n1ql nosql

在我们的couchbase数据库中,我们有一个包含较大对象的存储桶。这些对象里面还有其他对象,比如 people 。这应该是一个数组,但由于某种原因,我们必须将它创建为对象的对象,这就是它的样子:

{
    "companyName": "company name",
    "companyid": "11111-GUID-11111",
    "people": {
        "22222-GUID-22222": {
            "peopleid": "22222-GUID-22222",
            "name": "name1"
        },
        "33333-GUID-33333": {
            "peopleid": "33333-GUID-33333",
            "name": "name2"
        },
        "44444-GUID-44444": {
            "peopleid": "44444-GUID-44444",
            "name": "name3"
        }
    }
}

它也有类似结构的子对象。

我的问题是,我怎样才能提出一个可以回复所有"公司"其中包含名称为" name1" (例如)的对象。

正如我所说,人物对象也有子对象,让我们用ids说 pets 。我可以制作一个可以深入搜索的查询吗?

1 个答案:

答案 0 :(得分:1)

SELECT d。* FROM default AS d WHERE ANY IN IN OBJECT_VALUES(d.people)SATISFIES v.name =" name1" END;

OR

SELECT d。* FROM default AS d WHERE ANY v IN OBJECT_PAIRS(d.people)SATISFIES v。val。name =" name1" END;