我的 couchbase 存盤桶中有多個檔案,其結構如下:
{
"objectType": "someObjectType",
"id": "1",
"latest": {
"id": "1",
"version": "biyr4jqi4nny"
},
"history": {
"bi11b295bjng": {
"id": "1",
"version": "bi11b295bjng"
}
"bi1189wx1h6v": {
"id": "1",
"version": "bi1189wx1h6v"
}
}
}
如上面的片段所示,歷史是物件的物件。我想要做的是選擇objectType、id、latest 和history,但history 應該只包括查詢中指定的物件,而不是所有的history(可能很大)。
我的查詢如下所示:
SELECT
bucket.id,
bucket.objectType,
bucket.latest,
bucket.history.bi11b295bjng
FROM bucket WHERE objectType = 'someObjectType'
這產生了以下回應:
[
{
"objectType": "someObjectType",
"id": 1,
"latest": {
"id": "9mobile_NG_001-ROW",
"version": "biyr4jqi4nny"
},
"biyr4jqi4nny": {
"id": "1",
"version": "biyr4jqi4nny"
}
}
]
查詢的物件從父物件中解開。所需的輸出應如下所示:
[
{
"objectType": "someObjectType",
"id": 1,
"latest": {
"id": "9mobile_NG_001-ROW",
"version": "biyr4jqi4nny"
},
"history": {
"biyr4jqi4nny": {
"id": "1",
"version": "biyr4jqi4nny"
}
}
}
]
如何在不丟失父物件的情況下獲取 history.{version} ?
uj5u.com熱心網友回復:
構造物件和別名作為歷史
SELECT
b.id,
b.objectType,
b.latest,
{ b.history.bi11b295bjng } AS history
FROM bucket AS b
WHERE b.objectType = "someObjectType";
如果需要同一欄位的多個物件
SELECT
b.id,
b.objectType,
b.latest,
{ b.history.bi11b295bjng, b.history.bi1189wx1h6v } AS history
FROM bucket AS b
WHERE b.objectType = "someObjectType";
如果您有很多想要洗掉其中之一
SELECT
b.id,
b.objectType,
b.latest,
OBJECT_REMOVE(b.history,"bi11b295bjng") AS history
FROM bucket AS b
WHERE b.objectType = "someObjectType";
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/463019.html
上一篇:我不能使用C boostproperty_tree將嵌套鍵決議為JSON字串
下一篇:如何獲取json索引作為鍵?
