对象查询的 Couchbase 对象
Couchbase object of objects query
在我们的 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"
}
}
}
它还有结构相似的子对象。
我的问题是,我如何才能进行查询以响应所有 "company" 对象,其中包含姓名为 "name1" 的人(例如)。
正如我所说,人物对象也有子对象,比如 宠物,带有 ID。我可以做一个可以搜索那么深的查询吗?
SELECT d.* FROM default AS d WHERE ANY v IN OBJECT_VALUES(d.people) SATISFIES v.name = "name1" END;
或
SELECT d.* FROM default AS d WHERE ANY v IN OBJECT_PAIRS(d.people) SATISFIES v.val
.name = "name1" END ;
在我们的 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"
}
}
}
它还有结构相似的子对象。
我的问题是,我如何才能进行查询以响应所有 "company" 对象,其中包含姓名为 "name1" 的人(例如)。
正如我所说,人物对象也有子对象,比如 宠物,带有 ID。我可以做一个可以搜索那么深的查询吗?
SELECT d.* FROM default AS d WHERE ANY v IN OBJECT_VALUES(d.people) SATISFIES v.name = "name1" END;
或
SELECT d.* FROM default AS d WHERE ANY v IN OBJECT_PAIRS(d.people) SATISFIES v.val
.name = "name1" END ;