Как извлечь подмножество полей из массива объектов, используя API-документ Couchbase? - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь написать поиск, который возвращает массив из документа и пропускает некоторые поля:

 {
    "id": 10000,
    "schedule": [
      {
        "day": 0,
        "flight": "AF198",
        "utc": "10:13:00"
      },
      {
        "day": 0,
        "flight": "AF547",
        "utc": "19:14:00"
      },
      ...
    ]
  }

Я хотел бы получить все элементы расписания, но только свойства полета. Я хочу получить что-то вроде этого:

[
   { 
       "flight: "AF198"
   },
   { 
       "flight: "AF547"
   },
   ...
]

bucket.lookupIn(key).get("schedule.flight") не работает. Я пытался "schedule[].flight", "schedule.$.flight" Кажется, мне всегда нужно знать индекс.

Я видел, что это возможно с N1QL.

Couchbase - ВЫБЕРИТЕ подмножество полей из массива объектов

Ребята, вы знаете, как это сделать с помощью Subdocument API? Извините, если это тривиальный вопрос. Я просто не могу найти пример на

https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html

1 Ответ

0 голосов
/ 29 августа 2018

Поддокумент Couchbase требует полного пути, он не поддерживает расширение. В этом случае ему нужно знать индекс массива. Есть несколько других вариантов:

  1. Если каждый путь известен, то вы можете объединить все субдокументы. Всего можно получить 16 путей одновременно: bucket.lookupIn(key).get("schedule[0].flight").get(schedule[1].flight")

  2. Получите родительский объект и фильтр на стороне приложения: bucket.lookupIn(key).get("schedule")

  3. Как уже упоминалось в вопросе, используйте N1QL.

...