Вложить объект, возвращаемый запросом, как массив размером один - PullRequest
2 голосов
/ 17 июня 2019

Я сейчас пытаюсь запросить конкретный объект из массива.Однако в результате запроса возвращается один объект, а не массив первого размера (один объект заполняет массив).

Мой запрос:

SELECT meta(bn).id as _ID, meta(bn).cas as _CAS, bn.name
    FIRST t FOR t IN properties WHEN t.id = "1111" END as property
FROM bucket-name as bn
WHERE ANY t IN attributes SATISFIES t.id = "1111" END

result:

[
{
    "_CAS": 0000,
    "_ID": "1111",
    "name": "my name",
    "property": {
        "id": "1111",
        "name": "my property name"
    }
}
]

Я бы предпочел получить.Он почти полностью идентичен, за исключением того, что «свойство» теперь является массивом

[
{
    "_CAS": 0000,
    "_ID": "1111",
    "name": "my name",
    "property": [
        {
            "id": "1111",
            "name": "my property name"
        }
    ]
}
]

1 Ответ

2 голосов
/ 17 июня 2019

Изменить ПЕРВЫЙ на ARRAY https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/collectionops.html При использовании FIRST цикл останавливается, когда первый элемент удовлетворен, и возвращает элемент. При использовании ARRAY цикл продолжается до конца, и все квалифицированные элементы возвращаются как ARRAY (т.е. список)

SELECT meta(bn).id as _ID, meta(bn).cas as _CAS, bn.name
    ARRAY t FOR t IN properties WHEN t.id = "1111" END AS property
FROM `bucket-name` as bn
WHERE ANY t IN attributes SATISFIES t.id = "1111" END;
...